1、创建一个String boot项目是jar工程
在idea中选择String Initializr来创建项目;
next后命名,然后java version选着8(老师选的是8,默认的是12);
next后选择web,Spring web,创建web项目;
导入Spring web的一个依赖;
<dependency>
<groupId>org.springframework.boot </groupId>
<artifactId>spring-boot-starter-web</artifactId></dependency>
启动日志
Starting Springbootdemo1Application using Java 1.8.0_271 on DESKTOP-VKCAOHO with PID 17332 (F:\xiaomuzuoye\springbootdemo1\target\classes started by 沙鸥杰 in F:\xiaomuzuoye\springbootdemo1)
No active profile set, falling back to default profiles: default
Tomcat initialized with port(s): 8080 (http)(内置的tomcat已经初始化,端口号为8080)
Starting service [Tomcat](启动tomcat服务)
Starting Servlet engine: [Apache Tomcat/9.0.43](启动tomcat服务9.0.43)
Initializing Spring embedded WebApplicationContext(初始化内置的WebApplicationContext)
Root WebApplicationContext: initialization completed in 850 ms(初始化完成用的时间)
Initializing ExecutorService ‘applicationTaskExecutor’
Tomcat started on port(s): 8080 (http) with context path ‘’(端口号是8080,项目路径为空);
Started Springbootdemso1Application in 1.889 seconds (JVM running for 4.802)(启动时间)
2、项目的运行
两种运行方式
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6rGRgBud-1615997469042)(F:\Study\图库\Spring boot\1.png)]
3、项目结构
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yIFKFhUJ-1615997469054)(F:\Study\图库\Spring boot\2.png)]
.mvn——maven的包装器,用于完成不同版本mavn的切换
.src——项目源码,我们要写的代码都在这里;
– main
– resources
– static ---------- tymeleaf文件所需要用到的像.css、.js、.jpg等静态资源存放目录
– templates --------- Spring Boot对于前端页面,建议使用tymeleaf模板引擎,该文件的扩展名为.html
target——maven对项目的构建所生成地内容;
gitignore——将当前工程push到git远程库时,并不是所有文件都需要上传的,不需要上传的 文件,就将其文件名写入到该文件中,那么,这些文件将不会被git管理
**xxx.iml —— 这是idea工程生成的文件,是idea需要的工程信息 **
**HELP.md ——这是一个markdown文件,是一个当前工程的帮助文档,需要开发人员来编写 **
mvnw , mvnw.cmd——都是maven包装器相关的内容
4、pom.xml文件详解
first-0.0.1-SNAPSHOT.jar.original 文件是原来的maven打包的结果
first-0.0.1-SNAPSHOT.jar 文件是spring boot进行repackage后的结果
spring-boot-starter-web等依赖的版本是继承自父pom文件的
5、在线创建Spring Boot工程
在浏览器中打开https://start.spring.io站点,在其中创建Spring Boot工程。
Spring boot配置文件根据文件地扩展名地不同,有两种类型
properties文件——该文件名必须是application.properties;
yml文件
YAML是"YAML Ain’t a Markup Language"(YAML不是一种标记语言)的递归缩写。在开发的这种语言时,YAML 的意思其实是:“Yet Another Markup Language”(仍是一种标记语言),但为了强调这种语言以数据做为中心,而不是以标记语言为重点,而用反向缩略语重命名。
注意:
(1)yaml,通常情况下缩写为yml。Spring Boot 配置文件名称必须是application.yml或application.yaml。
(2)在yml文件中空格是有效字符,不能多写也不能少写。
server:
port: 8888 # 指定当前应用的端口号
servlet:
context-path: /wang # 指定当前应用的上下文路径
在Spring Boot中我们以后常用的是yml文件
导入actuator依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
在浏览器输入如下地址:
http://localhost:8888/wang/actuator/hello
为actuator指定专门的端口、上下文路径与basePath
在主配置文件中写入如下配置:
# 修改actuator的相关配置
management:
server:
port: 9999 //指定actuator的端口号
servlet:
context-path: /aynu // 指定actuator的上下文路径
endpoints:
web:
base-path: /java //指定监控终端的基本路径,用于替换默认的/actuator路径
此时在浏览器地址栏中需要输入如下地址才可看到监控结果
http://localhost:9999/aynu/java/health
开户其它监控终端
默认情况下,actuator仅开启了两个监控终端:health和info。
其他监控终端需要专门开启:在主配置文件中添加如下配置:
management:
endpoints:
web:
base-path: /java // 指定监控终端的基本路径,用于替换默认的/actuator路径
exposure:
include: "*" //开启所有actuator的监控终端
include: ["env", "health"] //开启指定终端;
//另一种写法
include:
- env
- health //也是开启指定终端;
//
exclude: ["info", "env"] // 排除(关闭)指定的监控终端
5、关闭指定监控终端:
exclude: [“info”, “env”] // 排除指定的监控终端
management:
endpoints:
web:
base-path: /java // 指定监控终端的基本路径,用于替换默认的/actuator路径
/*exposure:
include: "*" // 开启所有actuator的监控终端
# include: ["env", "health"] //k开启指定终端;
#include:
# - env
# - health*/
exclude: ["info", "env"] // 排除指定的监控终端
***************
/* endpoint:
stutdown:
enabled:true //启用shutdown控制终端;*/
1、health:
用于显示当前应用的状态:UP与Down;
2、info
用于显示当前应用的相关信息,这些信息是配置在主配置文件中的
例如:
//为当前应用致电给一些基本信息
info: //关键字,不能改变,但下面的所有内容都是自定义的;
suto:
name:张三
class:18软件工程java4班
school:
name:安阳师范学院,软件学院
address:河南省安阳市文明大道校区
project:
group-id:@project.groupId@
3、shutdown
用于关闭当前应用。其使用需要首先启用该监控终端,然后再提交POST请求。
在主配置文件中启用该终端。
management:
endpoint:
stutdown:
enabled:true //启用shutdown控制终端;
创建war工程,在Packaging选择war,其他不变;
war工程和jar工程很相似,在打包时运行包的方式不同,war需要在tomcat中运行,而jar包可以在dos命令行里运行;
1、修改工程名称
通过复制工程来完成
应用场景
当我们需要对某些业务代码进行单独时使用。而这些测试业务代码不方便在整个工程运行时进行,此时就需要使用单元测试了
状态码:
4xx:一般表示用户提交的请求有问题(找不到)
5xx:一般表示服务端代码有问题
一般情况下系统出现404、500等异常状态时,页面会给出默认的提示信息。而这些提示信息一般都是英文的,用户界面不友好。
我们这里要做的就是,将那些不友好的默认页面替换为我们自己定义的页面。
实现步骤:
在src/main/resources目录下创建新的目录public/error。注意目录名必须是这个名称。
然后在其定义html文件。要处理哪种状态码的异常,该文件名就以状态码命名。例如,
404.html,500.html
*读取主配置文件中的属性
使用**@Value("${属性名}")**可以将本配置文件中的指定属性读取并注入给相应的成员变量。
例如:
*读取自定义配置文件的属性:
Spring Boot中规定用户自定义配置文件只能是properties属性文件,不能是yml文件。文件名可以任意。
需要在读取自定义配置文件的类上添加@PropertySource注解。若要读取的属性值中包含中文,则需要给注解添加encoding属性。
读取指定文件:value可以省略
导入过程:
properties属性文件的文件内容:
*将多个配置属性以一个对象的形式读取
只有当这些属性有共同的前辍时,才可这样读取。
实现步骤:
首先要定义一个类,该类就是将来要一次性读取的对象。该类的属性名必须与配置文件中的属性名相同。然后再在类上添加以下注解。然后在需要一次性读取的类中直接注入该类实例即可。
过程
*以数组或List的形式读取配置信息
配置信息例如:
*以数组或List的形式读取元素为对象的配置信息
配置信息例如:
首先先创建一个City类来获取城市属性
在创建一个County类来获取City类的对象
自动注入数据
前台读取
**什么是环境选择 **
1、相同代码运行在不同环境
在项目开发过程中,一般情况下一套代码会被运行在多种不同的环境,
例如,开发环境、测试环境、上线环境等。这些环境中涉及到的DBMS等服务器地址及相关配置是不同的。这种切换、改变配置以运行在不同的环境中的需求,不能简单的通过每次切换,每次修改配置文件来完成。需要由系统能够自动完成。
2、不同环境中所使用的业务接口实现类是不同的
例如,要开发电商平台,其中有关支付模块的实现,在开发过程中,支付可能仅仅是一个本地的小Demo,而在真正项目上线后,其是要调用银联给的接口的,即按照银联给出的规范来实现真正的线上支付。
多配置文件
**1、实现步骤 **
1)复制了工程
2)定义了接口,与两个实现类
3)定义了多种环境的环境配置文件
4)在spring boot主配置文件中指定了要选择的环境
5)在接口实现类上添加了@Profile注解,指定了要选择的环境
6)定义了处理器
2、在命令行如何进行环境选择
java -jar 05-multiconfigs-0.0.1-SNAPSHOT.jar --spring.profiles.active=produce
3、环境配置文件
环境配置文件的文件名,必须是如下格式:
application-{profile}.yml
这里的profile表示的是环境名称,是用户自己定义的。在主配置文件及接口实现类中要选择环境,使用的就是这个名称。
三、单配置文件实现
所有的环境配置均写入到spring boot的主配置文件中。
当然,环境选择仍是配置在主配置文件中的。
每种环境配置间均需要使用三个减号作为分隔符。
**一、在Spring Boot中使用JSP页面,需要完成以下步骤: **
1)需要在src/main下创建一个目录webapp
2)在idea中需要指定这个webapp目录为当前应用的web目录的根目录
File/Project Structure
3)在webapp目录中创建jsp文件
4)在pom文件中导入JSP解析器jasper依赖
5)在pom文件的中添加资源指定配置。
二、配置逻辑视图
在spring mvc的处理器处理方法的返回值,默认使用的是物理视图(路径),我们也可以通过配置使用逻辑视图(名称)。
在application.yml文件中添加如下配置:
**一、在Idea下配置DBMS的GUI工具 **
**二、MyBatis与Spring Boot整合 **
1、添加依赖
2、定义Service接口与实现类
注意Service实现类上有个@Service注解,表示当前类的生命同期交给Spring容器来管理。
3、定义Dao接口
StudentDao { insertStudent(Student student); }
注意,该Dao接口上有一个注解@Mapper,表示当前Dao接口的实现类是通过Mapper动态代理生成的。
4、修改处理器
@Controller`StudentController { StudentService ; ( ) String registerHandler(Student student, Model model) { model.addAttribute( , student.getName()); model.addAttribute( , student.getAge()); model.addAttribute( , student); .saveStudent(student); ; } }`
5、定义Mapper映射文件
该映射文件需要定义在Dao接口所在的包,且文件名与Dao接口的简单类名相同,是一个xml文件。
6、指定java目录为资源目录
在pom文件的下添加如下配置。
该配置的目的,就本例而言,就是为了能够让系统从src/main/java目录中搜索到StudentDao.xml文件。
7、在主配置文件中注册mybatis
主要需要注册以下内容: