把一些可能會經常變動的東西寫在配置文件中,可以增加程序的靈活性,避免多次改版發版。
在sping boot中除了自帶的默認配置文件application.properties之外,我們還可以在resource下自定義配置文件,比方我們可以在resource下新加custom/my.properties文件,內容如下,雖然都是String格式,但通過一些處理,既可以返回數組,也可以返回Map:
kafka.producer.name=root kafka.producer.age=23
table.column.qualifier=name,age,nick_name,my_car
business.map=car:選車,service:服務,community:社區,my:我的,headline:頭條
同時新建一個配置類MyConfig,內容如下:
package com.bitauto.Configuration; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.PropertySource; import org.springframework.context.annotation.PropertySources; import java.util.HashMap; import java.util.Map; /** * Created by wangbin10 on 2018/5/4. */ @PropertySources({ @PropertySource("classpath:custom/my.properties"), @PropertySource(value = "${my.properties}", ignoreResourceNotFound = true)}) @Configuration public class MyConfig { @Value("${kafka.producer.name}") private String name; @Value("${kafka.producer.age}") private int age; @Value("${table.column.qualifier}") private String qualifier; @Value("${business.map}") private String businessMap; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String[] getQualifier() { return qualifier.split(","); } public void setQualifier(String qualifier) { this.qualifier = qualifier; } public Map getBusinessMap() { String[] strings = businessMap.split(","); Map<String,String> map=new HashMap(); for (String string : strings) { String[] split = string.split(":"); map.put(split[0],split[1]); } return map; } public void setBusinessMap(String businessMap) { this.businessMap = businessMap; } }
在測試文件中將MyConfig注入,即可得到配置文件中的信息。
@RunWith(SpringRunner.class) @SpringBootTest public class HbnApplicationTests { @Autowired private MyConfig myConfig; @Test public void test09(){ String name=myConfig.getName(); int age = myConfig.getAge(); System.out.println("name="+name+"age="+age); } }
