简单介绍 Spring Boot 中常见的配置文件类型,如 application.properties 和 application.yml 等,并说明它们各自的特点和用途。

- "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.0modelVersion>
- <parent>
- <groupId>org.springframework.bootgroupId>
- <artifactId>spring-boot-starter-parentartifactId>
- <version>2.7.17version>
- <relativePath/>
- parent>
- <groupId>edu.nfgroupId>
- <artifactId>ch02artifactId>
- <version>0.0.1-SNAPSHOTversion>
- <name>ch02name>
- <description>ch02description>
- <properties>
- <java.version>11java.version>
- properties>
- <dependencies>
- <dependency>
- <groupId>org.springframework.bootgroupId>
- <artifactId>spring-boot-starterartifactId>
- dependency>
-
- <dependency>
- <groupId>org.springframework.bootgroupId>
- <artifactId>spring-boot-starter-testartifactId>
- <scope>testscope>
- dependency>
- dependencies>
-
- <build>
- <plugins>
- <plugin>
- <groupId>org.springframework.bootgroupId>
- <artifactId>spring-boot-maven-pluginartifactId>
- <configuration>
- <image>
- <builder>paketobuildpacks/builder-jammy-base:latestbuilder>
- 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 插件实现了对应用程序的打包和部署
-
- @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 容器中,以便在其他地方进行使用。
- # 设置控制台日志输出格式
- 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表示一直输出彩色日志。
- 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是Spring Boot项目中常用的配置文件,它们用于配置应用程序的属性和设置。它们的主要区别在于格式不同。
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
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更适合组织和管理复杂的配置项。选择哪种格式应该根据具体的需要和个人习惯来决定。