1. 程式人生 > >SpringBoot @Value與@PropertySource操作配置檔案

SpringBoot @Value與@PropertySource操作配置檔案

一、場景簡述

筆者在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