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 listParam = new ArrayList<>();

    private Map mapParam= new HashMap<>();



    public List getListParam() {
        return listParam;
    }

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

    public Map getMapParam() {
        return mapParam;
    }

    public void setMapParam(Map mapParam) {
        this.mapParam = mapParam;
    }
}
  • 在其他类中可以通过 @Autowired 注入的方式使用
@Service
public class SomeService {
    
    @Autowired
    private PropertiesParam propertiesParam;


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

二、map、list的组合类型参数配置

基于上面读取配置模式,我们甚至可以配置类型更为复杂的参数,比如:List  Map 等复杂类型的参数,以List 类型为例:

  • 配置文件
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>  tool = new ArrayList<>();

    public List> getTool() {
        return tool;
    }

    public void setTool(List> 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;
    }
}

 

你可能感兴趣的:(springboot)