使用@ConfigurationProperties和@PropertySource

时间:2020-08-05 13:13:28

标签: java spring spring-boot properties

我需要将整个some.properties文件加载到MapProperties中。文件包含占位符。现在,我找到了以下解决方案:

@Configuration
@PropertySource(value = {"classpath:some.properties","${some.config}"}, ignoreResourceNotFound = true)
@ConfigurationProperties
public class Config {

    private Map<String, String> props;

    @Bean
    public Properties someProperties() {
        Properties properties = new Properties();
        properties.putAll(props);
        return properties;
    }

    //getter and setter
}

但是有些地方不方便。

  1. 文件中的所有属性都必须以道具开头。*
  2. @ConfigurationProperties查看所有文件。例如,如果application.properties将包含以props。*开头的属性,则此属性将放入Map中。有没有办法只使用文件some.properties?

我早些时候使用PropertiesFactoryBean如下:

@Bean
public Properties someProperties() {
    PropertiesFactoryBean propertiesFactoryBean = new PropertiesFactoryBean();
    propertiesFactoryBean.setLocation("some.properties");
    propertiesFactoryBean.afterPropertiesSet();
    return propertiesFactoryBean.getObject();
} 

可以,但是不能解析占位符。

0 个答案:

没有答案