在spring boot中通过动态键读取属性

时间:2016-08-31 04:49:57

标签: java spring spring-boot

我想知道Spring Boot中是否有任何方法可以使用动态密钥从属性文件中读取属性值。我知道属性可以放在application.properties中,可以使用@Value("propertyKey")来读取但是我的键将是动态的。

我知道@PropertySource读取属性值,我可以动态构建我的键。那么有没有Spring Boot提供的方法?

3 个答案:

答案 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);
    }    
 }