弹簧设置@value来自另一个变量



是否可以从另一个变量设置@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 );

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

作为问题,请使用预定义的系统属性变量与 EL 过期。
我的猜测是,意思是使用 java 系统属性(例如 -D 选项(。

@value接受您可以使用的 el 表达式

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

你说

现在我想让 var2 与 var1 连接起来,并且 依赖它

请注意,在这种情况下,更改 var2 不会影响消息,因为 初始化 Bean 时设置消息

就我而言(同时使用 Kotlin 和 Springboot(,我也必须转义"$"字符。否则,Intellij IDEA会给出编译时错误:

实现给出错误:

@Value("${SCRIPT_PATH}")
private val SCRIPT_PATH: String = ""

错误:批注参数必须是编译时常量

溶液:

@Value("${SCRIPT_PATH}")
private val SCRIPT_PATH: String = ""

相关内容

  • 没有找到相关文章

最新更新