我有一个单例配置类,我想在其中存储Web应用程序的所有属性。
我们如何像其他属性文件一样在application.properies文件中读取而不使用注释?
application.properies(即/application.properies)的标准文件名是什么?
我们只想读取一次application.properties。
答案 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());
}
}
}
}