Spring Boot 配置文件(application.yml、application-dev.yml、application-test.yml)
作者:CodeCharm——CC
一、application.yml 基础配置
是 Spring Boot 中用于配置应用程序属性的主要配置文件之一。这个文件通常用于配置应用程序的一般性属性,包括数据库连接、日志级别、端口号等。下面是一些常见的在 application.yml 中配置的示例:
# 服务器端口 server: port: 8080 # 数据库连接配置 spring: datasource: url: jdbc:mysql://localhost:3306/mydatabase username: root password: password driver-class-name: com.mysql.cj.jdbc.Driver # 日志级别 logging: level: root: INFO com.example.mypackage: DEBUG # 应用程序自定义属性 myapp: name: My Spring Boot App version: 1.0
上述示例展示了一些常用的配置项,但根据应用程序的需求,你可以在 application.yml 中配置各种属性。Spring Boot 非常灵活,可以根据属性的前缀识别属性,并将其绑定到对应的 Java 对象上,以方便在代码中使用。
需要注意的是,application.yml 文件采用 YAML(YAML Ain’t Markup Language)语法,它使用缩进和冒号来表示层次关系。因此,正确的缩进对于保持文件的结构是很重要的。
二、配置文件在项目中起到的具体作用
在 Spring Boot 中,可以通过属性文件(比如 application.yml 或 application.properties)来配置应用程序的属性。这些属性可以直接映射到 Java 对象中,从而在代码中方便地使用。
1、@ConfigurationProperties 注解
提供了一种方便的方式,可以将配置文件中的属性映射到 Java
对象的字段上。这样做的一个常见的方式是使用属性的前缀来进行匹配。以下是一个简单的示例:
# application.yml myapp: database: url: jdbc:mysql://localhost:3306/mydatabase username: root password: password
import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.stereotype.Component; @Component @ConfigurationProperties(prefix = "myapp.database") public class DatabaseProperties { private String url; private String username; private String password; // Getters and setters // 可以在这里添加其他的业务逻辑 }
在这个例子中,DatabaseProperties 类的属性(url
、username
、password
)会与
application.yml 文件中 myapp.database
下的属性相匹配。Spring Boot 会自动将这些属性值注入到
DatabaseProperties 实例中。
然后,你可以在其他组件中注入 DatabaseProperties,并直接使用其中的属性:
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @Service public class DatabaseService { private final DatabaseProperties databaseProperties; @Autowired public DatabaseService(DatabaseProperties databaseProperties) { this.databaseProperties = databaseProperties; } public void connectToDatabase() { String url = databaseProperties.getUrl(); String username = databaseProperties.getUsername(); String password = databaseProperties.getPassword(); // 连接到数据库的逻辑... } }
通过这种方式,你可以将配置文件中的属性映射到 Java
对象上,并在代码中方便地使用这些属性。这种配置方式可以帮助你集中管理应用程序的配置,并提高代码的可维护性。
2、@Value 注解
使用 @Value 注解可以直接将配置文件中的属性值注入到 Spring Bean 中的字段或方法参数上。
@Value("${property.name}") private String propertyName;
3、Environment对象
通过 Environment 对象获取配置属性。
@Autowired private Environment env; public void someMethod() { String propertyValue = env.getProperty("property.name"); }
4、@PropertySource注解引入外部属性文件
使用 @PropertySource 注解可以在配置类中引入外部的属性文件。
public class MyConfiguration { @Value("${custom.property}") private String customProperty; }
5、@ConfigurationPropertiesScan 注解(Spring Boot 2.2+)
这个注解允许在指定的包及其子包中扫描 @ConfigurationProperties
注解,无需显式声明
@ConfigurationProperties
的 Bean。
@ConfigurationPropertiesScan("com.example.config")
这些方式都允许在应用程序中方便地访问配置文件中的属性值,开发者可以根据具体情况选择最适合的方式。
三、Spring Boot 的其他配置文件
在 Spring Boot 中,除了常见的 application.yml
或 application.properties
外,你还可以使用其他自定义的配置文件。Spring Boot 提供了以下几种常见的配置文件:
1、application.properties/application.yml
默认的主配置文件,Spring Boot 应用会自动加载该文件。存放应用程序的主要配置。
2、application-{profile}.properties/application-{profile}.yml:
可以根据不同的环境配置不同的属性文件,{profile}
表示环境名称。
例如,application-dev.properties
用于开发环境,application-prod.properties
用于生产环境。
3、bootstrap.properties/bootstrap.yml:
用于 Spring Cloud 应用,是 Spring Cloud Config 服务的默认配置文件。
存放一些启动时需要优先加载的配置,比如连接到 Config Server 的配置。
4、application-{profile}.properties/application-{profile}.yml:
可以根据不同的环境配置不同的属性文件,{profile} 表示环境名称。 例如,application-dev.properties
用于开发环境,application-prod.properties 用于生产环境。
5、application-{label}.properties/application-{label}.yml:
用于 Git 和配置服务器的外部化配置,{label}
表示 Git 的标签。
例如,application-v1.properties 用于版本 1。
这些文件命名规范允许你根据不同的环境、配置标签或者配置文件类型组织和管理你的配置信息。Spring Boot 会根据上述规则自动加载相应的配置文件。
四、多配置文件使用哪个
Spring Boot 在启动时会加载默认的主配置文件,即 application.yml
或 application.properties
。如果有不同环境的配置文件,如 application-test.yml
或 application-dev.yml
,Spring Boot 会根据当前激活的环境来选择加载对应的配置文件。
1、设置 spring.profiles.active 指定激活环境
你可以通过在 application.yml 或 application.properties 中设置 spring.profiles.active
属性来指定激活的环境。例如:
spring: profiles: active: dev
上述配置表示激活 dev
环境,因此 Spring Boot 会加载 application-dev.yml
文件中的配置。
如果没有设置 spring.profiles.active
属性,Spring Boot 将默认使用主配置文件的配置。
2、命令行参数指定环境
除了通过属性文件来设置激活的环境外,你还可以通过命令行参数、系统属性、环境变量等方式来指定激活的环境。例如,通过命令行参数启动时指定环境:
java -jar your-application.jar --spring.profiles.active=dev
这样就会加载 application-dev.yml
的配置。
五、Springboot中配置文件的加载顺序
application.yml、application.properties和bootStrap.yml加载顺序
以jar包发布springboot项目时
默认会先使用jar包跟目录下的application.properties来作为项目配置文件。
如果在不同的目录中存在多个配置文件,它的读取顺序是:
1、config/application.properties(项目根目录中config目录下)
2、config/application.yml
3、application.properties(项目根目录下)
4、application.yml
5、resources/config/application.properties(项目resources目录中config目录下)
6、resources/config/application.yml
7、resources/application.properties(项目的resources目录下)
8、resources/application.yml
到此这篇关于Spring Boot 配置文件(application.yml、application-dev.yml、application-test.yml)的文章就介绍到这了,更多相关SpringBoot 配置文件内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!