【学习笔记】Java 一对一培训(3.1)Spring Boot介绍和基础

news2024/11/20 16:29:25

【学习笔记】Java 一对一培训(3.1)Spring Boot介绍和基础

  • 关键词:Java、Spring Boot、Idea、数据库、一对一、培训、教学
  • 本文主要内容含Spring Boot相关的基础介绍、快速入门、Maven介绍、代码结构介绍、打包运行、配置介绍等
  • 计划1小时完成,请同学尽量提前准备。本部分主要是理论学习。
  • 有学习需要请联系:xujian_cq
  • 手把手教学、腾讯会议一对一培训,所有代码都要敲一遍,有问题随时暂停解决
  • 前置内容(【学习笔记】Java 一对一培训(2.2)Java基础逻辑

文章导航栏

(1)Java 一对一培训(第一部分)开发工具介绍和安装
(2.1)Java 一对一培训(2.1)Java基础语法
(2.2)Java 一对一培训(2.2)Java基础逻辑
(3.1)Java 一对一培训(3.1)Spring Boot介绍和基础

1 基础介绍

1.1 什么是web应用开发

  • Web应用开发是指开发可以通过浏览器访问的应用程序,通常基于B/S架构模式。Web应用开发包括Web UI设计、Web前端开发和Web后端开发。
  • Web前端开发是创建Web页面,实现用户界面交互的过程,代码以HTML的形式运行在用户浏览器上。
  • Web后端开发是开发者编写运行在服务器上的代码,通常来说,这部分的工作需要和数据库打交道,比如读写数据、读写文件、实现业务逻辑等。后端开发者一般需要掌握一种Web编程语言(Java)和一个数据库管理系统(MySQL)。
  • 常见Web后端开发语言:Java、PHP、.NET、GoLang等

1.2 基于Java的Web应用开发

  • Java在Web应用中仍是最受欢迎的语言,除因用户量大、框架覆盖全面外,Java本身也非常适用于Web开发。
  • Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程。
  • Java具有简单性、面向对象、分布式、健壮性、安全性、平台独立与可移植性、多线程、动态性等特点。

1.3 基于Java的Web开发框架有哪些?

  • Java的Web框架虽然各不相同,但基本也都是遵循特定的路数的:使用Servlet或者Filter拦截请求,使用MVC的思想设计架构,使用约定、XML或 Annotation(注解)实现配置,运用Java面向对象的特点,面向对象实现请求和响应的流程,支持Jsp,Freemarker,Velocity等视图。
    1. JSP:JSP 技术是以 Java 语言作为脚本语言的,JSP 网页为整个服务器端的 Java 库单元提供了一个接口来服务于HTTP的应用程序。【前后端一体,已基本淘汰】
    2. SpringMVC:也叫 Spring web mvc,是 Spring 框架的一部分,是在Spring3.0后发布的。基于 MVC 架构,功能分工明确、解耦合。SpringMVC的底层就是servlet,以servlet为核心,接收请求、处理请求,显示处理结果给用户。【Java因此占领市场,配置式编程简化了开发难度】
    3. Spring Boot。微服务时代的宠儿,注解式编程的典范。

1.4 Spring Boot介绍

  • Spring Boot 是一个基于 Java 的开源框架,用于创建微服务,在Spring Cloud模式下,每个Spring Boot就是一个服务。Spring Boot也可以单独作为一个web应用运行。
  • Spring Boot 为 Java 开发人员提供了一个很好的平台来开发一个可以直接运行的独立和生产级的 Spring 应用程序。 您可以从最低配置开始,而不需要整个 Spring 配置设置。(这使得Spring的入门变得非常简单!)
    在这里插入图片描述
    请添加图片描述

2 快速入门

2.1 新建项目

  • 新建项目的方式通常有3种
    1. 在IDEA中创建项目
    1. 在start.spring.io中创建项目
    1. 在start.aliyun.com中创建项目
  • 前2种方式都可能受到某种原因的网络影响无法顺利的完成,因此我们选用方案3

2.1.1 在浏览器打开start.aliyun.com

2.1.2 参考如下图填写

  • 可参考顺序操作
    在这里插入图片描述
  • 获取代码时,点击下载,或下载一个压缩文件
  • 将该压缩文件放到某个不含空格、中文、特殊符号的文件夹下并解压
  • 我是复制到D盘的temp目录下,然后解压的,目录结构如下图
    在这里插入图片描述

2.1.3 用IDEA打开这个项目

  • 使用Maven管理的项目,使用IDEA打开pom.xml这个文件即可
  • 注意pom.xml这个文件非常重要,后面还会多次用到
  • 打开过程操作如下多图
    在这里插入图片描述在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述在这里插入图片描述
    在这里插入图片描述

2.2 运行项目

2.2.1 添加资源文件夹和文件

  • 如果已经有resources文件夹了,可以跳过2.2.1这一步
  • 如下操作创建文件夹
    在这里插入图片描述
    在这里插入图片描述
  • 如下操作创建配置文件
    在这里插入图片描述
  • 创建一个application.properties文件,并在其中写入server.port=8080
  • 完成后如下图
    在这里插入图片描述

2.2.2 开始运行

  • 与Java项目一样,运行main方法即可
  • 操作如下:
    在这里插入图片描述

2.2.3 在浏览器中访问

  • 在你的浏览器上打开下方地址,出现下图即为成功
  • 传送门
http://127.0.0.1:8080

在这里插入图片描述

3 Maven

3.1 介绍

Maven是 Apache 下的一个纯 Java 开发的开源项目。基于项目对象模型(缩写:POM)概念,Maven利用一个中央信息片断能管理一个项目的构建、报告和文档等步骤。Maven 是一个项目管理工具,可以对 Java 项目进行构建、依赖管理。

我们用Maven做什么:管理依赖、项目打包。

常用命令(Linux用命令、Windows用按钮):

  1. maven clean:对项目进行清理,删除target目录下编译的内容
  2. maven compile:编译项目源代码
  3. maven test:对项目进行运行测试
  4. maven packet:打包文件并存放到项目的target目录下,打包好的文件通常都是编译后的class文件
  5. maven install:在本地仓库生成仓库的安装包,可供其他项目引用,同时打包后的文件放到项目的target目录下

3.2 添加一个依赖

  • 推荐一个好用的工具类,帮助我们处理很多机械化的工作。Hutool是一个小而全的Java工具类库,通过静态方法封装,降低相关API的学习成本,提高工作效率,使Java拥有函数式语言般的优雅,让Java语言也可以“甜甜的”;
   		<dependency>
            <groupId>cn.hutool</groupId>
            <artifactId>hutool-all</artifactId>
            <version>5.3.7</version>
        </dependency>
  • 新手如果时间允许,建议对该工具类全部内容进行一遍手动实现【Java基础的内功强化】。
  • Tip:Java中,一般叫tool、util(s)的都是工具类。

4 代码结构

  • 此部分是非常重要的概念,如果要从事此行业,则必须清楚。

4.1 MVC概念

Spring Boot 遵循MVC模式。

MVC,即 Model 模型、View 视图,及 Controller 控制器。

View:视图,为用户提供使用界面,与用户直接进行交互。
Model:模型,承载数据,并对用户提交请求进行计算的模块。其分为两类: 一类称为数据承载 Bean:实体类,专门用户承载业务数据的,如 Student、User 等 一类称为业务处理 Bean:指 Service 或 Dao 对象,专门用于处理用户提交请求的。
Controller:控制器,用于将用户请求转发给相应的 Model 进行处理,并根据 Model 的计算结果向用户提供相应响应。
MVC 架构程序的工作流程:
(1)用户通过 View 页面向服务端提出请求,可以是表单请求、超链接请求、AJAX 请求等
(2)服务端 Controller 控制器接收到请求后对请求进行解析,找到相应的 Model 对用户请求进行处理
(3)Model 处理后,将处理结果再交给 Controller
(4)Controller 在接到处理结果后,根据处理结果找到要作为向客户端发回的响应 View 页面。页面经渲染(数据填充)后,再发送给客户端。
在这里插入图片描述

4.2 Spring Boot 的MVC概念

Spring Boot 在MVC上有简单优化,但万变不离其宗。

三层架构是指:视图层 View、服务层 Service,与持久层 Dao,它们分别完成不同的功能。
View 层:用于接收用户提交请求的代码在这里编写。
Service 层:系统的业务逻辑主要在这里完成。
Dao 层:直接操作数据库的代码在这里编写。

为了更好的降低各层间的耦合度,在三层架构程序设计中,采用面向抽象编程。

即上层对下层的调用,是通过接口实现的。
而下层对上层的真正服务提供者,是下层接口的实现类。
服务标准(接口)是相同的,服务提供者(实现类)可以更换。

这就实现了层间解耦合。

4.3 Spring Boot MVC 代码结构

4.3.1 代码结构

在这里插入图片描述

4.3.2 调用过程

在这里插入图片描述

5 打包运行

5.1 修改下配置文件

  • 不明白为什么start.spring.io故意留个坑在这里
  • 这里不截图了,看管老爷们摸索下
    1. 打开项目根目录下的pom.xml文件
    1. 找到如下内容,将其中的true改为false
<skip>true</skip>
    1. 修改pom.xml后需要reload import或者点击右上角的reimport图标
      在这里插入图片描述

5.2 开始打包

  • 如下图操作
    在这里插入图片描述
  • 打包完成后:
    在这里插入图片描述

5.3 运行jar包

  • 如果IDEA中还在运行项目,则点击红色按钮关闭(自行摸索下)
  • 如上图进入到jar文件所在目录
  • 在目录中不要选中任何文件,按住shift键不放,同时点击鼠标右键
  • 选择如下图的“在终端中打开”
    在这里插入图片描述
  • 输入下方命令运行jar包(如果你的jar包和为的名称不同,则输入你的)
java -jar demo-0.0.1-SNAPSHOT.jar
  • 运行成功如下图所示,完成后可以在浏览器中访问8080端口试试
    在这里插入图片描述

6 配置介绍

  • 我们观察到,服务访问的端口是8080,那么如何修改呢?Spring Boot为我们提供了一个最简单的配置方案。
  • 修改如下的内容即可
    在这里插入图片描述
  • 我们采用了默认application.properties作为配置文件,此外还有yml格式的文件,大同小异
  • 配置项很多,我们以后用到什么讲什么
  • 配置项太多,以致于没有人能全部记住,记住也没有意义
  • 配置项介绍参考文档链接

7 结语

万事开头难,然后中间难。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1017436.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

TOTP算法实现

TOTP算法实现 1 什么是双因子认证&#xff08;2FA&#xff09;2 TOTP原理2.1 HOTP原理2.2 TOTP 3 实现参考文章 最近发现github天天给我发通知要启用双因子认证&#xff08;2FA&#xff09;&#xff0c;受不了了只能想办法启用了。看到它支持采用基于TOTP算法的应用的认证方式&…

彻底搞懂线程池原理以及创建方式

1. 为什么要使用线程池 在实际使用中&#xff0c;线程是很占用系统资源的&#xff0c;如果对线程管理不善很容易导致系统问题。因此&#xff0c;在大多数并发框架中都会使用线程池来管理线程&#xff0c;使用线程池管理线程主要有如下好处&#xff1a; 降低资源消耗。通过复用…

Python机器学习实战-建立Gradient Boosting模型预测肾脏疾病(附源码和实现效果)

实现功能 建立Gradient Boosting模型预测肾脏疾病 实现代码 import pandas as pd import warnings warnings.filterwarnings("ignore") pd.set_option(display.max_columns, 26)#读取数据 df pd.read_csv("E:\数据杂坛\datasets\kidney_disease.csv") …

vMAP——论文解析

vMAP: Vectorised Object Mapping for Neural Field SLAM vMAP 是一个物体级稠密图 neural SLAM&#xff0c;每一个物体都用一个 mlp 来表征&#xff0c;而不需要 3D 先验。当 RGB-D 相机在没有任何先验信息的情况下时&#xff0c;vMAP 会即时检测物体 instance&#xff0c;并将…

在Ubuntu 18.04上支持C++17的std::filesystem的方法

在Ubuntu 18.04上通过命令sudo apt install gcc g安装的gcc/g版本为7.5&#xff0c;此版本并不直接支持filesystem&#xff0c;如下图所示&#xff1a; Ubuntu 18.04上的g 7.5支持experimental的filesystem,即std::experimental::filesystem&#xff0c;若想使Ubuntu 18.04支持…

购物系统设计与实现

目 录 1 绪 论 1 1.1 本课题研究的背景和意义 1 1.1.1 本课题研究的背景 1 1.1.2 本课题研究的意义 2 1.1.3 本课题的发展现状及前景 2 1.2 系统的实现任务 7 2 系统概述及实现技术介绍 8 2.1 网上商城简介 8 2.2 相关实现技术介绍 10 2.2.1 JSP语言及其特点 10 2.2.2 Dreamwe…

快速学会搭建微信小程序的基础架构

(创作不易&#xff0c;感谢有你&#xff0c;你的支持&#xff0c;就是我前行的最大动力&#xff0c;如果看完对你有帮助&#xff0c;请留下您的足迹&#xff09; 目录 基础架构 构建界面 引入 uni-ui 组件库 组件自动引入 配置TS类型 状态管理 持久化 数据交互 请…

Unity中Shader特性PerRendererData

文章目录 前言一、优化前是对使用了相同材质球的不同物体间shader分别设置&#xff0c;比较消耗性能二、使用[PerRendererData]标签&#xff0c;可以在脚本中使用SetPropertyBlock()对使用同一材质球的不同物体进行修改其Shader属性 前言 Unity中Shader特性PerRendererData 一…

Python学习 -- 常用数据交换格式(CSV、XML、JSON)

数据交换格式是在不同系统之间交换数据时使用的一种标准化格式。在Python中&#xff0c;我们常用的数据交换格式有CSV、XML和JSON。本篇技术博客将介绍这三种数据交换格式的详细使用方法&#xff0c;并提供具体的代码案例&#xff0c;帮助初学者快速掌握这些格式的使用。 CSV&…

第二章 进程与线程 六、线程的实现方式和多线程模型

目录 一、线程的实现方式 1、用户级线程 2、内核级线程 二、多线程模型 注意&#xff1a; 1、一对一模型 &#xff08;1&#xff09;定义: &#xff08;2&#xff09;优点&#xff1a; &#xff08;3&#xff09;缺点&#xff1a; 2、多对一模型 &#xff08;1&…

Linkerd的部署与入门--service mesh初步体验

Linkerd2初探 部署环境Linkerd简介安装Linkerd客户端在k8s上安装Linkerd控制平面&#xff08;服务端&#xff09;实验&#xff1a;数据平面代理注入demo应用安装viz插件&#xff08;可视化面板&#xff09;部署grafana 其他 部署环境 k8s环境: KIND 模拟kubernetes 1.21.1 kub…

【python】使用Reddit API爬取数据

这篇文章介绍如何使用reddit api获数据,文档地址如下:https://www.reddit.com/dev/api/ 首先需要创建应用,页面如下:https://www.reddit.com/prefs/apps 这里name随意填写,reditect uri随意写一个网址 如图所示,创建好应用以后,可以得到CLIENT_ID和SECRET_KEY: 编写代…

线性回归网络

李沐大神的《动手学深度学习》&#xff0c;是我入门机器学习的首课&#xff0c;因此在这里记录一下学习的过程。 线性回归的从零开始实现 线性回归是理解机器学习的基础&#xff0c;它经常用来表示输入和输出之间的关系。   线性回归基于几个简单的假设&#xff1a; 首先&am…

【计算机视觉】Vision and Language Pre-Trained Models算法介绍合集(一)

文章目录 一、ALIGN二、Contrastive Language-Image Pre-training&#xff08;CLIP&#xff09;三、Learning Cross-Modality Encoder Representations from Transformers&#xff08;LXMERT&#xff09;四、BLIP: Bootstrapping Language-Image Pre-training五、Vision-and-La…

Json-Jackson和FastJson

狂神&#xff1a; 测试Jackson 纯Java解决日期格式化 设置ObjectMapper FastJson&#xff1a; 知乎&#xff1a;Jackson使用指南 1、常见配置 方式一&#xff1a;yml配置 spring.jackson.date-format指定日期格式&#xff0c;比如yyyy-MM-dd HH:mm:ss&#xff0c;或者具体的…

机器学习 day35(决策树)

决策树 上图的数据集是一个特征值X采用分类值&#xff0c;即只取几个离散值&#xff0c;同时也是一个二元分类任务&#xff0c;即标签Y只有两个值 上图为之前数据集对应的决策树&#xff0c;最顶层的节点称为根节点&#xff0c;椭圆形节点称为决策节点&#xff0c;矩形节点称…

ffplay源码解析-FrameQueue队列

帧队列架构位置 结构体源码 FrameQueue结构体 /* 这是一个循环队列&#xff0c;windex是指其中的首元素&#xff0c;rindex是指其中的尾部元素. */ typedef struct FrameQueue {Frame queue[FRAME_QUEUE_SIZE]; // FRAME_QUEUE_SIZE 最大size, 数字太大时会占用大量的…

DPDK环境搭建

&#xff08;1&#xff09;虚拟环境&#xff1a;VMware Workstation 16 Pro 网上随便下载一个也行 &#xff08;2&#xff09;操作系统&#xff1a;ubuntu-22.04-beta-desktop-amd64.iso 下载地址&#xff1a;oldubuntu-releases-releases-22.04安装包下载_开源镜像站-阿里云…

Thymeleaf语法详解

目录 一、Thymeleaf介绍 &#xff08;1&#xff09;依赖 &#xff08;2&#xff09;视图 &#xff08;3&#xff09;控制层 二、变量输出 三、操作字符串 四、操作时间 五、条件判断 六、遍历集合 &#xff08;1&#xff09;迭代遍历 &#xff08;2&#xff09;将遍…

Java————数组

1 、数组 数组可以看成是相同类型元素的一个集合&#xff0c; 在内存中是一段连续的空间。 每个空间有自己的编号&#xff0c;其实位置的编号为0&#xff0c;即数组的下标。 数组是引用类型。 1. 数组的创建 T[] 数组名 new T[N];T&#xff1a;表示数组中存放元素的类型 …