天天看點

springboot讀取XXX.properties自定義配置檔案讀取以及map、list、組合類型參數配置一、springboot讀取XXX.properties自定義配置檔案讀取二、map、list的組合類型參數配置

一、springboot讀取XXX.properties自定義配置檔案讀取

  SpringBoot推薦自動配置,但多數情況由于業務等需求需要我們手動配置一些參數。SpringBoot可以識别兩種格式的配置檔案,分别是yml檔案與properties檔案,我們可以将application.properties檔案換成application.yml,這兩個檔案都可以被SpringBoot自動識别并加載,但是如果是自定義的配置檔案,就最好還是使用properties格式的檔案,因為SpringBoot中暫時還并未提供手動加載yml格式檔案的功能(這裡指注解方式)。

  application.properties配置檔案欲被SpringBoot自動加載,需要放置到指定的位置:src/main/resource目錄下,一般自定義的配置檔案也位于此目錄之下。自定義的xxx.properties配置檔案是不會被SpringBoot自動加載的,需要手動去進行加載,這裡的手動加載一般指的是注解的方式加載,加載自定義屬性檔案的注解:@PropertySource("classpath:xxx.properties"),代碼樣例如下:

  • 配置檔案:xxx.properties
#map 第一種方式
data.mapParam.name=zhangsan
data.mapParam.sex=man
data.mapParam.age=11

#map 第二種方式
data.mapParam[name]=zhangsan
data.mapParam[sex]=man
data.mapParam[age]=11

#list 第一種方式
data.listParam[0]=apple0
data.listParam[1]=apple1
data.listParam[2]=apple2
#list 第二種方式
data.listParam=apple0,apple1,apple2
           
  • 讀取配置檔案的類
@Component
@PropertySource(value = "classpath:xxx.properties")
@ConfigurationProperties(prefix = "data")
public class PropertiesParam{

    private List<String> listParam = new ArrayList<>();

    private Map<String, String> mapParam= new HashMap<>();



    public List<String> getListParam() {
        return listParam;
    }

    public void setListParam(List<String> listParam) {
        this.listParam = listParam;
    }

    public Map<String, String> getMapParam() {
        return mapParam;
    }

    public void setMapParam(Map<String, String> mapParam) {
        this.mapParam = mapParam;
    }
}
           
  • 在其他類中可以通過 

    @Autowired

     注入的方式使用
@Service
public class SomeService {
    
    @Autowired
    private PropertiesParam propertiesParam;


    public void init() {
       propertiesParam.getMapParams();
       propertiesParam.getListParams();
    }
}
           

二、map、list的組合類型參數配置

基于上面讀取配置模式,我們甚至可以配置類型更為複雜的參數,比如:List<Map>  Map<String,List> 等複雜類型的參數,以List<Map> 類型為例:

  • 配置檔案
data.tool.[0].name=zhangsan
data.tool.[0].age=20
data.tool.[0].slim=chzhang
data.tool.[1].name=lishi
data.tool.[1].age=18
data.tool.[1].slim=aachzhang
           
  • 讀取配置檔案的類
@Component
@ConfigurationProperties(prefix = "data")
@PropertySource(value = "classpath:xxx.properties")
public class TestConfig {
    private List<Map<String, String>>  tool = new ArrayList<>();

    public List<Map<String, String>> getTool() {
        return tool;
    }

    public void setTool(List<Map<String, String>> tool) {
        this.tool = tool;
    }
}
           

其他複雜類型的參數配置大同小異,注意配置檔案"xxx.properties" 參數的正确配置以及讀取參數屬性的類型一緻。

補:工具類擷取配置檔案參數另一個辦法

@SuppressWarnings("all")
@Slf4j
@Component
public class MdmUtils {

    private static  String APNS_CONFIG;
    @Value("${iosmdm.params.apns_config}")
    public  void setApnsConfig(String apnsConfig) {//注意,set方法中的static要去掉
        APNS_CONFIG = apnsConfig;
    }
}
           

繼續閱讀