我想知道Spring Boot中是否有任何方法可以使用动态密钥从属性文件中读取属性值。我知道属性可以放在application.properties
中,可以使用@Value("propertyKey")
来读取但是我的键将是动态的。
我知道@PropertySource
读取属性值,我可以动态构建我的键。那么有没有Spring Boot提供的方法?
答案 0 :(得分:15)
你可以使用:
@Autowired
private Environment env;
然后从代码加载属性:
env.getProperty("your.property")
答案 1 :(得分:1)
1- 通过Java注释注册属性文件。
@Configuration
@PropertySource("classpath:test.properties")
public class PropertiesJavaConfig {
}
2- 在运行时动态选择正确的文件。
@PropertySource({
"classpath:persistence-${envTarget:DB}.properties"
})
答案 2 :(得分:0)
如果您从 application.properties 中读取数据,您只需定义由 freakman (org.springframework.core.env.Environment) 指定的环境 spring 自动装配变量。但是,如果您使用特定于某些属性的新属性文件,则可以使用以下代码:
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
import org.springframework.core.env.Environment;
@Configuration
@PropertySource("classpath:filename.properties")
public class CustomConfig {
@Autowired
Environment env;
public String getProperty(String keyName) {
return env.getProperty(keyName);
}
}