Spring将属性解析为String而不是另一个Property

时间:2018-09-25 12:42:31

标签: java spring properties properties-file

我有一个需要使用的现有属性文件。在这里,我必须定义一个看起来像新属性-$ {testText1}。$ {testText2}

我不希望编辑这些属性,即当我实际获取这些值时,我希望使用$ {testText1}。$ {testText2}而不是替换的值。

所以我的属性文件看起来像- someProperty=${testText1}.${testText2}

现在,当我获取此信息时:

  

@Value(“ $ {someProperty}”)

     

私有字符串myValue;

myValue实际上应该包含字符串-${testText1}.${testText2},而不是替换的值。

我该怎么做?

1 个答案:

答案 0 :(得分:1)

您可以通过2种方式来做到这一点:

1。定义一个新的配置类:

@Configuration
@ConfigurationProperties
public class SomePropertyConfig {

    //name of the property from application.properties
    private String someProperty;

    public String getSomeProperty() {
        return someProperty;
    }

    public void setSomeProperty(String someProperty) {
        this.someProperty = someProperty;
    }
}

之后,您可以自动连接该bean

@Autowired
 private SomePropertyConfig somePropertyConfig;

通过这种方式,目标属性将被注入到配置中

  1. 如果您不介意更改application.properties文件,则可以使用spring表达式语言。

application.properties

 someProperty= #{'$'}{testText1}.#{'$'}{testText2}