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

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;