我想在Java Sping Boot 应用程序中读取application.properties文件中的所有值及其键。
我可以通过article以多种方式读取值。这种方法的问题是每次添加属性时,我们都需要更新代码。
我想要一个动态的方式来读取所有的键和值。我不想在属性添加到application.properties文件后更改代码。
我尝试了这样的方法,但没有得到想要的结果:
@Autowired
private Environment environment;
@GetMapping
public Map<String, String> getAllProperties() {
Map<String, String> properties = new HashMap<>();
// Get all property names
String[] propertyNames = environment.getProperty("spring.config.name", "application").split(",");
for (String propertyName : propertyNames) {
String propertyValue = environment.getProperty(propertyName);
properties.put(propertyName, propertyValue != null ? propertyValue : "null");
}
return properties;
}
字符串
我检查了application.properties文件位于src/main/resources
下,文件名为application.properties
让我知道我想达到的目标是否可行。
2条答案
按热度按时间djp7away1#
你的属性在资源中,写入资源是个坏主意。
当然,您可以编写一个单独的方法,它将从属性文件中读取,但是当您在WAR或JAR中构建项目时,您会遇到问题
创建一个隐藏文件夹,把你想要的东西放在那里
vawmfj5a2#
请尝试以下代码:
字符串
Environment
bean包含所有的属性源,但是它需要转换为AbstractEnvironment
才能直接访问属性源。然后应该过滤这些属性源,只保留OriginTrackedMapPropertySource
s。最后,按包含文件名的名称过滤属性源。使用
contains
的原因是其余属性源的名称采用以下格式:通过位置“optional:classpath:/”配置资源“class path resource [application.properties]”
请记住,这些属性是文件中的原始值,但可以被特定于配置文件的属性覆盖。在这种情况下,
environment.getProperty(propertyName)
将返回与从上面代码中读取的值不同的值。供参考:Access all Environment properties as a Map or Properties object