我有一个groovy课程,我想要自动归属一个属性值。
例如:
public @Value("${valueA}" ) String valueA;
在我的应用程序上下文中添加了property-placeholder
<context:property-placeholder location="classpath:spring/app.properties" />
app.properties的值为“valueA”设置,所以理论上这应该在运行时填充我的类中的String valueA。
如果我使用java类,则此设置可以正常工作,但如果我使用groovy类则不行。
我收到编译错误:
错误:预期'$ valueA'是@ org.springframework.beans.factory.annotation.Value中java.lang.String类型的内联常量
错误:属性'value'的类型应为'java.lang.String';但在@ org.springframework.beans.factory.annotation.Value中找到了'java.lang.Object'类型
我只是想知道在使用groovy类时上述语法是否正确,如果不是在运行时自动装配@Value参数的正确语法是什么。
答案 0 :(得分:55)
使用单引号,即。
public @Value('${valueA}') String valueA
答案 1 :(得分:28)
因为使用$导致Groovy将注释参数解释为GString,所以会出现编译错误。你可以逃脱\ $或使用单引号。