如何解析 属性 并将值注入回环境?
How can I parse a property and inject values back into the Environment?
我有一个 属性 我想解析并将值注入回环境中。我想使用 @Value 注释使这些值可用。
例如。属性文件或系统 属性:
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;
在 class 中使用 @Value("${prop1}") prop1;属性。
如何在不需要包含上述 envProps 的情况下执行此操作?
您可以使用 Spring 表达式语言 (SpEL)
您的所有属性都可以使用 Environment
访问,因此在下面的代码中您正在访问 prop1 并注入 value
String
@Value("#{environment.prop1}")
private String value;
我有一个 属性 我想解析并将值注入回环境中。我想使用 @Value 注释使这些值可用。
例如。属性文件或系统 属性:
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;
在 class 中使用 @Value("${prop1}") prop1;属性。
如何在不需要包含上述 envProps 的情况下执行此操作?
您可以使用 Spring 表达式语言 (SpEL)
您的所有属性都可以使用 Environment
访问,因此在下面的代码中您正在访问 prop1 并注入 value
String
@Value("#{environment.prop1}")
private String value;