SpringBoot
1.概念和介绍
Spring用于简化Java程序的开发,而SpringBoot为了简化Spring程序开发。SpringBoot是Spring脚手架。可以快速完成Java程序的创建、提高开发效率等。
SpringBoot的优点:
- 快速集成框架,提供启动依赖的功能,可以集成各种框架。
- 内置了运行容器、无需配置Tomcat等Web容器,直接运行和部署程序。
- 可以不使用xml,使用注解和配置的方式进行开发。
- 支持更多的监控指标,可以更好的了解项目的运行情况。
创建SpringBoot项目(支持在网页上创建):IDEA社区版(2021.2.3+)在创建SpringBoot之前要安装Spring Boot Helper 插件,否则没有Spring lnitializr选项。

SpringBoot项目结构:

注意:SpringBoot项目约定大于配置,不需要配置bean扫描路径,但是需要遵守其规则,例如在demo同级目录下配置Bean类,但是SpringBoot项目不会去扫码该路径,只有和DemoApplication同级目录才会去扫描。
2.配置
配置主要是将程序运行时需要的一些数据信息,放入在配置文件中。
- 数据库的连接信息(用户名或密码)
- 项目的启动端口
- 配置日志级别
- …
配置文件的种类:properties和yml。
properties和yml的区别:它们可以共存,当两个不同类型的配置文件同时存在时且配置了相同的配置项时,properties的优先级更高,以propertees为准。
注意:一般不会在一个项目中使用不同的配置文件格式。
配置文件内容分类:Spring Boot内置的配置项目和用户自定义配置项。
2.1properties配置文件
#配置启动绑定的端口号
server.port=8081
#配置数据库连接链接
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/database?characterEncoding=utf8
#配置连接数据库的用户
spring.datasource.username=root
#配置连接数据的密码
spring.datasource.password=123456
#自定义配置项
key1=hello
优点:
- 写法简单,不易出错。
缺点:
- 写法冗余,不够简便和灵活
2.1yml配置文件IDEAA
语法格式(一级目录):key: value
多级目录:相对于上一级偏移两个空格。
server:
port: 8081
spring:
datasource:
url: jdbc:mysql://127.0.0.1:3306/database?characterEncoding=utf8
username: root
password: 123456
key1: hello
优点:
- 写法简单、可读性高。
- yml支持更多的数据类型,可以简易表达清单、对象、列表等数据形式。
- 支持更高的编程语言。如Java、Golang、PHP、Python等等。
当设置value值时,如果值使用双引号进行包裹,如果里面的内容包含转义字符,转义字符能够正常发挥作用。
yml配置其他类型的数据:
-
配置对象(属性通过setter方法进行赋值,没有setter方法会报错)
yml写法1: student: id: 10 age: 20 name: tom yml写法2: student: {id: 10, age: 20, name: tom} //从配置文件中读取对象并赋值到一个bean上 @Data @Component @ConfigurationProperties(prefix = "student") public class Student { private int age; private Integer id; private String name; } -
配置list集合:
写法1: lists: list1: - A - B - C - D 写法2: lists: {list1: [A,B,C,D]} @Data @Component @ConfigurationProperties(prefix = "lists") public class MyList1 { private List list1; }
关于配置文件中文乱码问题:通过设置当前项目和新项目的编码格式。settings->encoding。旧版本IDEA修改了编码格式,以前的乱码不会被恢复,新版本可以。
2.3读取配置文件信息
读取配置文件的信息使用@Value(“${key}”)注解,自定义和内置的配置项都能够读取到。
@RestController
public class TestController {
@Value("${key1}")
private String key;
@RequestMapping("/hi")
public String sayHi(){
return "HI"+key;
}
}
spring boot更多的系统配置项:https://docs.spring.io/spring-boot/docs/current/reference/html/application-properties.html
2.5设置不同运行环境的配置文件
多运行环境配置:
- application-dev.yml(开发环境使用的配置文件)
- application-test.yml(测试环境使用的配置文件)
- application-produce.yml(生产环境使用的配置文件)
dev和test/produce标识可以进行改变,但是其他地方不能改变。
通过application.yml中配置使用哪一个配置文件:
spring: profiles: active: test
3.日志
日志在程序中不可或缺,非常重要,主要目的是方便程序员定位问题和解决问题。
日志级别:在不同的运行环境,记录不同程度的问题和信息。比如在开发阶段,需要输出的日志比较多,方便我们进行调试程序和查看问题;在生产环境需要输出的日志较少,排除不必要的日志信息,节约系统资源,提高应用程序的性能;
3.1输出自定义日志信息
//获取日志对象(使用spring boot内置的日志框架Slf4j) private static Logger log = LoggerFactory.getLogger(TestController.class); //使用日志对象提供的方法进行日志打印,默认级别是info log.trace("trace...");//微量级别最低 log.debug("dubug...");//调试级别 log.info("info...");//普通打印信息,默认级别 log.warn("warn...");//警告级别 log.error("error...");//错误级别
不同的日志框架,实际的实现都不尽相同,日志门面(logging facade)是一种用于封装和统一处理不同底层日志库的接口和工具。
3.2设置日志级别筛选日志内容
3.3将日志持久化
将日志写入到文件。写入日志是以追加的方式,日志文件过大会自动分割。
输出方式1:
#配置日志的名称/设置日志的保存路径
logging:
file:
name: demo.log
输出方式2:
logging:
file:
path: D:\gitee\java\springboot-demo
日志级别设置:控制输出日志的内容
#设置根日志/自定义的日志级别
logging:
level:
root: info
com:
example:
demo: trace
可以使用lombok框架,给类添加@Slf4j,简化开发。
4.Lombok
在编译时期,动态将注解转化为对应的代码。
lombok常用注解:
| 注解 | 作用 |
|---|---|
| @Getter | 自动添加getter方法 |
| @Setter | 自动添加setter方法 |
| @ToString | 自动添加toString方法 |
| @EqualsAndHashCode | 自动生成equals和hashCode方法 |
| @NoArgsConstructor | 自动添加无参构造 |
| @AllArgsConstructor | 自动添加所有属性的构造方法 |
| @NonNull | 属性不能为NULL |
| @RequierdArgsConstructor | 自动添加必要的属性和构造方法final修饰+@NonNull的属性是必需的。 |
| @Data | @Getter + @Setter + @ToString +@EqualsAndHashCode+@RequiredArgsConstructor+@NoArgsConstructor |
| @Slf4j | 添加⼀个名为 log 的⽇志对象。 |
3.热部署
-
添加热部署框架支持
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <scope>runtime</scope> <optional>true</optional> </dependency> -
Settings开启自动编译(配置当前项目和新项目自动编译)
3. 开启运行中热部署(新版本配置)