在Spring Boot中使用属性文件,可以采用其默认的application.properties和application.yml配置文件,也可以使用自定义的配置文件。
属性文件依赖
如果使用的是yml文件进行配置,则会自动对配置字段进行自动提示。如果使用的使用的是properties文件进行配置,则需要引入以下依赖才能进行自动提示(即使不引入这个依赖,配置字段也会生效,只是不方便快捷书写配置):
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<!--下面一行设置为true说明这个依赖是可选的,且不进行依赖传递,不设置则默认为false,为必须依赖 -->
<optional>true</optional>
</dependency>
使用属性配置
- 我们可以通过@Value注解,使用${…}这样的占位符读取配置在属性文件的内容。假如我们自定义了一个字段"my.value=123"在properties文件中,那么获取属性的示范代码如下:
public class ValueTest {
@Value("${my.value}")
private String valueTest;
public void test01(){
System.out.println(valueTest);
}
}
执行代码的话控制台将会输出:123
2. 还可以使用@ConfigurationProperties注解进行获取,代码示范如下:
@ConfigurationProperties("my")
public class ValueTest {
private String value;
public void test01(){
System.out.println(value);
}
同样可以拿到值,注意这里“my”和属性名组合后要完全匹配配置文件里的全限定名。使用这个注解可以方便获取大量的属性值,唯一注意的就是要使用对应的属性名称。
载入自定义的配置文件
1.使用@PropertySource注解来载入非默认的properties配置文件
@propertySource(value={"classpath:haha.properties"}, ignoreResourceNotFound=true)
public class ValueTest {
@Value("${my.value}")
private String valueTest;
public void test01(){
System.out.println(valueTest);
}
}
- 第一种方法是不支持yml配置文件载入的,但是如果我们要载入非自定义的yml配置文件的话,需要在application.yml配置文件中这样写:
spring:
profiles:
active: dev, test
如上配置,我们可以载入名为application-dev.yml和application-test.yml的配置文件,注意文件名要加上“application-”的前缀。通过这个注解我们可以方便切换配置文件从而达到切换测试、开发、生产等环境的目的。也可以将多个环境配置写在同一个配置文件中,如:
# 激活 prod
spring:
profiles:
active: prod
spring:
profiles: dev
# 略去配置
spring:
profiles: test
# 略去配置
spring:
profiles: prod
# 略去配置
我们也可以使用@Profile(“dev”)指定类或方法在特定的Profile环境生效。