Spring从另一个变量设置@value

时间:2017-07-20 04:39:27

标签: spring spring-boot spring-data spring-annotations spring-config

是否可以从另一个变量

设置@Value

例如。

System properties : firstvariable=hello ,secondvariable=world

@Value(#{systemProperties['firstvariable'])
String var1;

现在我希望将var2var1联系起来并依赖它,例如

    @Value( var1 + #{systemProperties['secondvariable']
    String var2;

public void message(){ System.out.printlng("Message : " + var2 );

2 个答案:

答案 0 :(得分:6)

不,你不能这样做,否则你会得到The value for annotation attribute Value.value must be a constant expression

但是,您可以通过以下方式实现相同的目标

在你的属性文件中

firstvariable=hello
secondvariable=${firstvariable}world

然后将值读为

@Value("${secondvariable}")
private String var2;

System.out.println("Message : " + var2 )的输出为Message : helloworld

答案 1 :(得分:1)

由于问题使用EL到期的预定义systemProperties变量 我的猜测是意思是使用java系统属性(例如-D选项)。

由于@value接受el表达式,您可以使用

@Value("#{systemProperties['firstvariable']}#systemProperties['secondvariable']}")
private String message;

你说

  

现在我想将var2与var1和。进行连接   依赖于它

请注意,在这种情况下,更改var2不会对邮件产生影响 初始化bean时设置了消息