目录
什么是Spring Boot
Spring 的诞⽣是为了简化 Java 程序的开发的,⽽ Spring Boot 的诞⽣是为了简化 Spring 程序开发
的。
Spring Boot 就是 Spring 框架的脚⼿架,它就是为了快速开发 Spring 框架⽽诞⽣的。
Spring Boot 优点
- 快速集成框架,Spring Boot 提供了启动添加依赖的功能,⽤于秒级集成各种框架。
- 内置运⾏容器,⽆需配置 Tomcat 等 Web 容器,直接运⾏和部署程序。
- 快速部署项⽬,⽆需外部容器即可启动并运⾏项⽬。
- 可以完全抛弃繁琐的 XML,使⽤注解和配置的⽅式进⾏开发。
- ⽀持更多的监控的指标,可以更好的了解项⽬的运⾏情况。
SpringBoot 配置⽂件
配置⽂件的格式
Spring Boot 配置⽂件主要分为以下两种格式:
.properties
.yml
如下图所示:
![](https://img-blog.csdnimg.cn/552ee0c7ade44f799be29049ea70d7c7.png)
1. 理论上讲 properties 可以和 yml ⼀起存在于⼀个项⽬当中,当 properties 和 yml ⼀起存在⼀个项⽬中时,如果配置⽂件中出现了同样的配置,⽐如 properties 和 yml 中都配置了“server.port”,那么这个时候会以 properties 中的配置为主,也就是 .properties 配置⽂件的优先级最⾼,但加载 完 .properties ⽂件之后,也会加载 .yml ⽂件的配置信息。2. 虽然理论上来讲 .properties 可以和 .yml 共存,但实际的业务当中,我们通常会采取⼀种统⼀的配置⽂件格式,这样可以更好的维护(降低故障率)。这就好像连锁店的服饰⼀样,不管是⽼款的服装还是新款的服装,⼀定要统⼀了才好看
properties 配置⽂件说明
properties 配置⽂件是最早期的配置⽂件格式,也是创建 Spring Boot 项⽬默认的配置⽂件。
properties 基本语法
properties 是以键值的形式配置的,key 和 value 之间是以“=”连接的,如:
# 配置项⽬端⼝号
server.port=8084
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/testdb?characterEncoding=
utf8
spring.datasource.username=root
spring.datasource.password=root
读取配置⽂件
如果在项⽬中,想要主动的读取配置⽂件中的内容,可以使⽤ @Value 注解来实现。
@Value 注解使⽤“${}”的格式读取,如下代码所示:
import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; import javax.annotation.PostConstruct; @Component public class ReadYml { @Value("${server.port}") private String port; @PostConstruct public void postConstruct() { System.out.println("Read YML,port:" + port); } }
properties 配置⽂件中会有很多的冗余的信息,想要解决这个问题,就可以使⽤ yml 配置⽂件的格式化了。yml 配置⽂件说明
yml 是 YAML 是缩写,它的全称 Yet Another Markup Language 翻译成中⽂就是“另⼀种标记语⾔”。yml 优点分析
- yml 是⼀个可读性⾼,写法简单、易于理解,它的语法和 JSON 语⾔类似。
- yml ⽀持更多的数据类型,它可以简单表达清单(数组)、散列表,标量等数据形态。它使⽤空⽩符号缩进和⼤量依赖外观的特⾊,特别适合⽤来表达或编辑数据结构、各种配置⽂件等。
- yml ⽀持更多的编程语⾔,它不⽌是 Java 中可以使⽤在 Golang、PHP、Python、Ruby、 JavaScript、Perl 中
yml 基本语法
yml 是树形结构的配置⽂件,它的基础语法是“key: value”,注意 key 和 value 之间使⽤英⽂冒汗加空格的⽅式组成的,其中的空格不可省略。基础语法如下:
![](https://img-blog.csdnimg.cn/0c9505047c164bafa00f1a7dd642f484.png)
其中第⼀项的配置为正确的,key 也是⾼亮显示的,⽽第⼆项没有空格是错误的使⽤⽅式,第⼆项的key 也没有⾼亮显示。
使⽤ yml 连接数据库
spring:
datasource:
url: jdbc:mysql://127.0.0.0:3306/dbname?characterEncoding=utf8
username: root
password: root
yml 使⽤进阶
yml 配置不同数据类型及 null
# 字符串
string.value: Hello
# 布尔值,true或false
boolean.value: true
boolean.value1: false
# 整数
int.value: 10
int.value1: 0b1010_0111_0100_1010_1110 # ⼆进制
# 浮点数
float.value: 3.14159
float.value1: 314159e-5 # 科学计数法
# Null,~代表null
null.value: ~
yml 配置读取
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import javax.annotation.PostConstruct;
@Component
public class ReadYml {
@Value("${string.hello}")
private String hello;
@PostConstruct
public void postConstruct() {
System.out.println("Read YML,Hello:" + hello);
}
}
配置对象
我们还可以在 yml 中配置对象,如下配置:
student:
id: 1
name: Java
age: 18
或者是使⽤⾏内写法(与上⾯的写法作⽤⼀致)
student: {id: 1,name: Java,age: 18}
SpringBoot ⽇志⽂件
⽇志对于我们来说,最主要的⽤途就是排除和 定位问题。
除了发现和定位问题之外,我们还可以通过⽇志实现以下功能:
- 记录⽤户登录⽇志,⽅便分析⽤户是正常登录还是恶意破解⽤户。
- 记录系统的操作⽇志,⽅便数据恢复和定位操作⼈。
- 记录程序的执⾏时间,⽅便为以后优化程序提供数据⽀持。
- 以上这些都是⽇志提供的⾮常实⽤的功能。
⾃定义⽇志打印
开发者⾃定义打印⽇志的实现步骤:
1、在程序中得到⽇志对象。
2、使⽤⽇志对象的相关语法输出要打印的内容。
在程序中得到⽇志对象
// 1.得到⽇志对象
private static Logger logger = LoggerFactory.getLogger(UserController.class
);
Logger 对象是属于 org.slf4j 包下的
使⽤⽇志对象打印⽇志
// 2.使⽤⽇志打印⽇志
logger.info("--------------要输出⽇志的内容----------------");
⽇志格式说明
⽇志级别
⽇志的级别分为:
- trace:微量,少许的意思,级别最低;
- debug:需要调试时候的关键信息打印;
- info:普通的打印信息(默认⽇志级别);
- warn:警告,不影响使⽤,但需要注意的问题;
- error:错误信息,级别较⾼的错误⽇志信息;
- fatal:致命的,因为代码异常导致程序退出执⾏的事件。
⽇志级别的顺序:
越往上接收到的消息就越少,如设置了 warn 就只能收到 warn、error、fatal 级别的⽇志了。
⽇志级别设置
logging:
level:
root: error
import org.slf4j.Logger;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/user")
public class UserController {
// 1.得到⽇志对象
private static Logger logger =
LoggerFactory.getLogger(UserController.class);
@Value("${server.port}")
private String port;
@Value("${spring.datasource.url}")
private String url;
@RequestMapping("/sayhi")
public String sayHi() {
// 2.使⽤⽇志打印⽇志
logger.trace("================= trace ===============");
logger.debug("================= debug ===============");
logger.info("================= info ===============");
logger.warn("================= warn ===============");
logger.error("================= error ===============");
return "Hi," + url;
}
}
⽇志的输出级别,默认是 info.
⽇志持久化
配置⽇志⽂件的保存路径:
# 设置⽇志⽂件的⽬录
logging:
file:
path: D:\\home\\ruoyi
配置⽇志⽂件的⽂件名:
# 设置⽇志⽂件的⽂件名
logging:
file:
name: D:\\home\\ruoyi\\spring-1204.log
更简单的⽇志输出—lombok
添加 lombok 依赖
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.20</version>
<optional>true</optional>
</dependency>
输出⽇志
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/p")
@Slf4j
public class PersonController {
@RequestMapping("/log")
public void loggerTest() {
log.error("------------------- error -----------------");
}
}