如何解析属性并将值注入环境?

时间:2015-03-20 20:12:24

标签: spring spring-boot

我有一个属性,我想解析并将值注入环境。我想使用@Value注释使这些值可用。

EG。属性文件或系统属性:

settings.compoundProperty=abc.xyz.123

我想解析并注入

prop1=abc
prop2=xyz
prop3=123

回到环境中。我希望能够在我的bean中注入这些新属性,如下所示:

@Value("${prop1}") prop1;

@Value("${prop2}") prop2;

我试过了:

@ConfigurationProperties (prefix="settings")
public class EnvironmentProperties {
      @Inject ConfigurableEnvironment env;

      public void setCompoundProperty(String s) {
           // parse s and inject prop1, prop2 and prop3 back using env
      }

然而,仅当我包含

时才有效
@Inject EnvironmentProperties envProps; 
带有@Value(“$ {prop1}”)prop1的类中的

;属性。

如何在不需要包含上述envProps的情况下执行此操作?

1 个答案:

答案 0 :(得分:0)

您可以使用Spring Expression Language(SpEL)

您可以使用Environment访问所有属性,因此在下面的代码中,您将访问prop1并注入value字符串

@Value("#{environment.prop1}")
private String value;