在单例类中一次读取applicatiion.properties

时间:2019-02-05 10:21:07

标签: spring-boot

我有一个单例配置类,我想在其中存储Web应用程序的所有属性。

我们如何像其他属性文件一样在application.properies文件中读取而不使用注释?

application.properies(即/application.properies)的标准文件名是什么?

我们只想读取一次application.properties。

1 个答案:

答案 0 :(得分:0)

Spring Boot已经读取了application.properties中存储的所有属性,更多内容请阅读Externalized Configuration文档。

如果要映射一个名为server.port的属性,则只需使用@Value("${server.port}") Integer port

如果要访问Spring Boot加载的所有属性,则可以使用Environment对象并访问所有加载的PropertySources,并从每个属性源中检索所有值。

answer展示了操作方法。但是,为避免丢失已加载属性的优先顺序,必须反转属性源列表。在这里,您可以找到加载所有属性而不丢失弹簧优先级顺序的代码:

@Configuration
public class AppConfiguration {
    @Autowired
    Environment env;

    public void loadProperties() {
        Map<String, Object> map = new HashMap();

        for (Iterator it = ((AbstractEnvironment) env).getPropertySources().iterator().reverse(); it.hasNext(); ) {
            PropertySource propertySource = (PropertySource) it.next();
            if (propertySource instanceof MapPropertySource) {
                map.putAll(((MapPropertySource) propertySource).getSource());
            }
        }
    }
}