版权声明:本文为博主原创文章,转载请注明出处 浅然的专栏 https://blog.csdn.net/w_linux/article/details/82119736
一、场景简述
笔者在SpringBoot框架中希望获取properties配置文件中的属性值,来实现隐藏配置信息暴露在代码中,并且在多个properties配置文件下来指定获取哪个属性值。所以就使用了@Value注解来获取配置文件的属性值,@PropertySource来指定配置文件。
二、场景实现
application.properties的配置信息
spring.data.mongodb.database=test
spring.data.mongodb.host=localhost
spring.data.mongodb.port=27017
创建一个实体类如下
@PropertySource({"classpath:application.properties"})
@Component
public class MongoDateConfig {
/*
* 属性
*/
@Value("${spring.data.mongodb.database}")
private String dbname;
@Value("${spring.data.mongodb.host}")
private String host;
@Value("${spring.data.mongodb.port}")
private Integer port;
//setter or getter
//toString
}
以上只要在相应位置将它的Bean引入(使用@Autowired),使用get方法即可获取配置文件中相应的属性值。
若有多个properties配置文件,则使用如下方法
如果有不同配置文件,相同属性名的话,则取值为最后一个配置文件中的值
@PropertySource({"classpath:config/my.properties","classpath:config/config.properties"})
若一个properties配置文件中需要有多个数据源,则使用如下方法
在properties配置文件中配置
spring.data.mongodb.primary.database = test
spring.data.mongodb.primary.host=localhost
spring.data.mongodb.primary.port=27017
spring.data.mongodb.secondary.database = test2
spring.data.mongodb.secondary.host=localhost
spring.data.mongodb.secondary.port=27017