我有一个属性,我想解析并将值注入环境。我想使用@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的情况下执行此操作?
答案 0 :(得分:0)
您可以使用Spring Expression Language(SpEL)
您可以使用Environment
访问所有属性,因此在下面的代码中,您将访问prop1并注入value
字符串
@Value("#{environment.prop1}")
private String value;