springboot代碼,註解配置獲取yml,properties文件的map即鍵值對

註解配置獲取yml,properties文件map即鍵值對

yml獲取自定義鍵值對

yml中的鍵值對

test:
  map:
    key1: value1
    key2: value2
    key3: value3

pom中的依賴配置

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-configuration-processor</artifactId>
    <optional>true</optional>
</dependency>

代碼:

@Component
@ConfigurationProperties(prefix = "test")
public class MyConfiguration { 
    private String name; 
    private Map map = new HashMap(); 
    public Map getMap() {
        return map;
    }
 
    public String getName() {
        return name;
    }
 
    public void setName(String name) {
        this.name = name;
    }
}

然後在調用層,如controller註入即可測試:

@Autowired
MyConfiguration myConfiguration;

註意:該實例中的yml文件默認是:application.yml文件。也就是說,鍵值對要寫在application.yml文件中;

properties 獲取自定義鍵值對

config.properties 中的鍵值對:

test.map.key1=value1
test.map.key2=value2
test.map.key3=value3

pom中無依賴配置

代碼:

@Component
@Configuration
@PropertySource(value = {"classpath:/config.properties"}, encoding = "utf-8")
@ConfigurationProperties(prefix = "test")
public class MyConfiguration { 
    private String name; 
    private Map map = new HashMap(); 
    public Map getMap() {
        return map;
    }
 
    public void setMap(Map map) {
        this.map = map;
    }
 
    public String getName() {
        return name;
    }
 
    public void setName(String name) {
        this.name = name;
    }
}

然後在調用層,如controller註入即可測試:

@Autowired
MyConfiguration myConfiguration;

以上實例隻是針對於map(鍵值對)的獲取,相對於讀取文件,解析文件流來說,方便瞭許多。

properties配置應用,為什麼需要使用properties文件

在項目中我們常常會使用Constants常量類,達到系統全局配置的目的。

但是有些常量需要動態的配置,如果項目上線後,每次修改Constants.java然後再編譯,再上傳Constants.class文件,再重啟服務器。這樣導致很繁瑣。

如果將需要修改的配置項寫成properties文件,將會在項目後期維護帶來很大的方便~!

root.url=http://localhost:8080/BNCAR2/
root.path=E:/ws2/BNCAR2/rel/
mall.partstype.url=mall.jsp?rowid=0&typeFlag=0&pid=35
mall.carproduct.url=mall.jsp?rowid=0&typeFlag=1&pid=74
mall.partstype.typename1=\u4FDD\u517B\u5957\u88C5
mall.partstype.typename2=\u7CFB\u7EDF\u517B\u62A4
mall.partstype.typename3=\u8F6E\u80CE\u8F6E\u6BC2
network.province.name1=\u4E0A\u6D77
network.province.name2=\u6C5F\u82CF
pageutil.persize=10

註意名=值之間不要留空格,註意名的命名習慣,一般為小寫,層級關系之間用點號分隔。

以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。

推薦閱讀: