前言
简单介绍 Spring Boot 中常见的配置文件类型,如 application.properties 和 application.yml 等,并说明它们各自的特点和用途。
一、前期准备
1、新建项目,结构如下
2、添加依赖
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.7.17</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>edu.nf</groupId>
<artifactId>ch02</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>ch02</name>
<description>ch02</description>
<properties>
<java.version>11</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<image>
<builder>paketobuildpacks/builder-jammy-base:latest</builder>
</image>
</configuration>
</plugin>
</plugins>
</build>
</project>
这是一个 Maven 的
pom.xml
文件,它描述了一个 Spring Boot 项目的依赖关系和构建方式。在这个文件中,我们定义了两个依赖项:
spring-boot-starter
:这是一个 Spring Boot 的核心依赖,它包含了 Spring MVC、Spring Data JPA、Spring Security 等常用模块,并且自动配置了这些模块所需的环境。通过引入这个依赖,我们可以快速搭建一个基于 Spring Boot 的 Web 应用程序。
spring-boot-starter-test
:这是一个 Spring Boot 的测试依赖,它提供了许多用于测试的工具和框架,例如 JUnit、Mockito、Hamcrest 等。通过引入这个依赖,我们可以轻松地编写和执行单元测试和集成测试。此外,我们还定义了一个 Maven 插件
spring-boot-maven-plugin
,用于将应用程序打包成一个可执行的 JAR 文件,以便于部署和运行。在这个插件中,我们还可以配置容器、端口等参数,以满足不同的应用程序需求。总之,
pom.xml
文件是 Spring Boot 项目的配置文件,它定义了项目的依赖关系和构建方式,并且通过 Maven 插件实现了对应用程序的打包和部署
3、新建一个 DemService 类
@Service
public class DemService {
private final static Logger log = LoggerFactory.getLogger(DemService.class);
public void add(){
log.info("日志记录...");
}
}
这是一个简单的
DemService
类的示例,它使用了 Spring 的@Service
注解来标记这个类是一个服务组件。在这个类中,我们定义了一个静态的
Logger
对象log
,用于记录日志。这个对象是通过LoggerFactory.getLogger()
方法获取的,其中传入的参数是DemService.class
,表示要获取该类的日志记录器。接下来,我们定义了一个名为
add()
的方法,用于执行一些逻辑操作。在这个方法中,我们通过log.info()
方法记录了一条日志信息,使用了info
级别的日志级别。日志级别可以根据需要进行调整,常见的级别包括debug
、info
、warn
、error
等。通过使用
@Service
注解,Spring 会自动将DemService
类识别为一个服务组件,并将其加入到应用程序的 IOC 容器中。这样,在其他需要使用DemService
的地方,可以直接通过依赖注入的方式获取到DemService
的实例,并调用其中的方法。总之,
DemService
类是一个示例的服务组件,它使用了日志记录功能,并通过@Service
注解将其纳入到 Spring 的 IOC 容器中,以便在其他地方进行使用。
二、配置application.properties
# 设置控制台日志输出格式
logging.pattern.console= %d{yyy-MM-dd HH:mm:ss} [%t] %-5p %C - %m%n
# 设置文件日志的输出格式
logging.pattern.file= %d{yyy-MM-dd HH:mm:ss} [%t] %-5p %C - %m%n
# 设置日志文件的名称以及保存的位置
logging.file.name = logs/test.log
# 设置日志的默认输出级别
logging.level.root = info
# 设置滚动日志(默认的滚动策略是文件大小结合日期进行滚动)
# ${LOG_FILE} 引用 springboot 默认文件输出位置
logging.logback.rollingpolicy.file-name-pattern= ${LOG_FILE} .%d{yyy-MM-dd}.%i.log
# 设置滚动日志的大小(默认10mb)
logging.logback.rollingpolicy.max-file-size= 20MB
# 保留滚动日志的历史天数(默认只保存近7天的日志文件)
logging.logback.rollingpolicy.max-history= 30
# 一直保持彩色日志,例如在单元测试中输出的日志
spring.output.ansi.enabled= always
这是一个Spring Boot项目的日志配置文件,包括控制台输出格式、文件输出格式、日志文件名称和位置、默认输出级别、滚动日志等。其中,%d{yyy-MM-dd HH:mm:ss}表示日期时间格式,[%t]表示线程名,%-5p表示日志级别,%C表示类名,%m表示日志消息,%n表示换行符。logging.logback.rollingpolicy.file-name-pattern指定了滚动日志文件名的格式,%d{yyy-MM-dd}表示日期格式,%i表示当前日志文件的索引号(从0开始)。logging.logback.rollingpolicy.max-file-size设置单个日志文件的最大大小,logging.logback.rollingpolicy.max-history设置保留的历史日志文件天数。spring.output.ansi.enabled设置彩色输出,always表示一直输出彩色日志。
三、配置 application.yml
spring:
output:
ansi:
# 一直保持彩色日志,例如在单元测试中输出的日志
enabled: always
# 设置控制台日志输出格式
logging:
pattern:
console: "%d{yyy-MM-dd HH:mm:ss} [%t] %-5p %C - %m%n"
# 设置文件日志的输出格式
file: "%d{yyy-MM-dd HH:mm:ss} [%t] %-5p %C - %m%n"
# 设置日志文件的名称以及保存的位置
file:
name : "logs/test.log"
# 设置日志的默认输出级别
level:
root : info
logback:
rollingpolicy:
# 设置滚动日志(默认的滚动策略是文件大小结合日期进行滚动)
# ${LOG_FILE} 引用 springboot 默认文件输出位置
file-name-pattern: "${LOG_FILE} .%d{yyy-MM-dd}.%i.log"
# 设置滚动日志的大小(默认10mb)
max-file-size: 20MB
# 保留滚动日志的历史天数(默认只保存近7天的日志文件)
max-history: 30
这是一个Spring Boot项目的日志配置文件,使用yml格式。其中的内容都是上面的一样的。这里说一些要注意的点。
# yml是一种主流的资源配置文件,具有缩进功能,阅读性更好,
# 每个父子节点使用冒号分隔,赋值的节点冒号后一定要有空格
# 当赋值的节点冒号后一定要有空格
四、测试类
注意:要测试这两个测试类要分开测试,因为他们的功能是一样的,运行的时候把其中一个名字改了,不然就会冲突了。
@SpringBootTest
class Ch02ApplicationTests {
@Autowired
private DemService service;
@Test
void contextLoads() {
service.add();
}
}
把 DemService 注入进来,调用其的方法,运行即可。
运行结果:
当运行结束后,会生成一个 logs 的文件用来保存我们的日志文件。
日志文件的内容如下:
2023-11-21 15:22:29 [main] INFO org.springframework.boot.StartupInfoLogger - Starting Ch02ApplicationTests using Java 11.0.14 on LAPTOP-B1GJ9HN3 with PID 17664 (started by qiu in D:\作业汇总\S5\springBoot-demo\ch02)
2023-11-21 15:22:29 [main] INFO org.springframework.boot.SpringApplication - No active profile set, falling back to 1 default profile: "default"
2023-11-21 15:22:29 [main] INFO org.springframework.boot.StartupInfoLogger - Started Ch02ApplicationTests in 1.248 seconds (JVM running for 2.71)
2023-11-21 15:22:30 [main] INFO edu.nf.ch02.service.DemService - 日志记录...
五、 application.properties 和 application.yml 的特点和区别
application.properties和application.yml是Spring Boot项目中常用的配置文件,它们用于配置应用程序的属性和设置。它们的主要区别在于格式不同。
1、application.properties
application.properties是一种基于键值对(key-value)的配置文件格式,它使用等号(=)分隔键和值。这种配置文件格式比较简单,易于阅读和编辑。可以通过在类路径下创建或修改application.properties文件来配置Spring Boot应用程序的属性。例如:
server.port=8080 spring.datasource.driverClassName=com.mysql.jdbc.Driver spring.datasource.url=jdbc:mysql://localhost:3306/mydb spring.datasource.username=root spring.datasource.password=123456
2、application.yml
application.yml是一种基于缩进(indentation)的配置文件格式,它使用冒号(:)分隔键和值。这种配置文件格式比较灵活,支持多层结构和列表,可以更好地组织和管理复杂的配置项。例如:
server: port: 8080 spring: datasource: driverClassName: com.mysql.jdbc.Driver url: jdbc:mysql://localhost:3306/mydb username: root password: 123456
总之,两者都是配置Spring Boot应用程序的属性和设置的文件,但application.yml更适合组织和管理复杂的配置项。选择哪种格式应该根据具体的需要和个人习惯来决定。