2

是否可以@Value从另一个变量设置

例如。

System properties : firstvariable=hello ,secondvariable=world

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

现在我想var2必须连接var1并依赖它,比如

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

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

2 回答 2

8

不,你不能那样做,否则你会得到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

于 2017-07-20T05:00:59.400 回答
1

作为问题,使用带有 EL 到期的预定义 systemProperties 变量。
我的猜测是,其含义是使用 java 系统属性(例如 -D 选项)。

作为 @value 接受 el 表达式,您可以使用

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

你说

现在我想让 var2 与 var1 连接并依赖它

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

于 2017-07-20T06:20:50.190 回答