Spring Boot提供了多种方式进行属性配置,主要有以下几种
1、application.properties/application.yml文件配置
Spring Boot默认使用application.properties或application.yml文件作为主配置文件,可以在其中配置各种属性。其中,application.yml使用了更加直观的yaml语法,支持更加复杂的配置结构。
例如,在application.properties中配置数据库连接信息:
spring.datasource.url=jdbc:mysql://localhost:3306/mydb
spring.datasource.username=root
spring.datasource.password=root
在application.yml中配置:
spring:
datasource:
url: jdbc:mysql://localhost:3306/mydb
username: root
password: root
命令行参数配置
java -jar myapp.jar --server.port=8080
环境变量配置
可以在环境变量中设置属性值,Spring Boot会自动将其加载到应用程序中。例如,在Linux系统中设置
export SPRING_DATASOURCE_URL=jdbc:mysql://localhost:3306/mydb
export SPRING_DATASOURCE_USERNAME=root
export SPRING_DATASOURCE_PASSWORD=root
读取配置文件中的自定义属性
在application.yml中配置如下数据
girl:
name: test
age: 18
注意在配置文件中":"后面有一个空格
在程序中使用
@Value("${girl.name}")
private String name;
@GetMapping("/hello")
public String hello() {
log.error("测试日志,{}","spring boot");
log.info("测试日志,{}","spring boot");
log.error(name);
return String.format("第一个spring boot 应用");
}
代码中通过@Value("${girl.name}")读取配置文件中的数据
在配置文件中配置变量
girl:
name: test
age: 18
realName: ${girl.name}-1
在配置realName时,使用了${girl.name}中的值
通过前缀一次性读入配置
@Data
@Component
@ConfigurationProperties(prefix = "girl")
public class GirlProperty {
private String name;
private Integer age;
private String realName;
}
当系统同时存在@value配置和@ConfigurationProperties配置时,@ConfigurationProperties优先
不同环境的配置
可以通过spring.profiles.active来配置来指定应用程序所处的当前环境。它的值可以是一个或多个以逗号分隔的环境名称,例如dev、prod等
例如,假设有一个application.yml文件和一个application-dev.yml文件,它们分别包含如下内容:
# application.yml
server:
port: 8080
spring:
datasource:
url: jdbc:mysql://localhost/mydb
username: root
password: root
# application-dev.yml
spring:
datasource:
url: jdbc:mysql://localhost/mydb-dev
username: dev
password: dev
在application.yml中,spring.datasource的配置是通用的;而在application-dev.yml中,spring.datasource的配置是针对dev环境的。如果要启动dev环境,可以通过以下方式指定spring.profiles.active属性:
命令行参数
java -jar myapp.jar --spring.profiles.active=dev
环境变量
export SPRING_PROFILES_ACTIVE=dev
在application.yml中进行配置
# application.yml
server:
port: 8080
spring:
profiles:
active: test
# application-test.yml
server:
port: 8080
spring:
datasource:
url: jdbc:mysql://localhost/mydb
username: root
password: root
# application-dev.yml
spring:
datasource:
url: jdbc:mysql://localhost/mydb-dev
username: dev
password: dev