Spring 3.0.5 不评估属性中的 @Value 注释
Posted
技术标签:
【中文标题】Spring 3.0.5 不评估属性中的 @Value 注释【英文标题】:Spring 3.0.5 doesn't evaluate @Value annotation from properties 【发布时间】:2011-07-13 15:23:20 【问题描述】:尝试将属性自动连接到 Spring 3.0.5.RELEASE 中的 bean,我正在使用:
config.properties
:
username=myusername
main-components.xml
:
<context:property-placeholder location="classpath:config.properties" />
我的班级:
@Service
public class MyClass
@Value("$username")
private String username;
...
因此,用户名被设置为 literally "$username"
,因此表达式不会被解析。我对此类的其他自动关联依赖项已设置,并且 Spring 不会引发任何异常。我也尝试添加@Autowired
,但没有帮助。
如果我将属性解析为单独的 bean,然后使用 @Autowired
+ @Qualifier
,它可以工作:
<bean id="username" class="java.lang.String">
<constructor-arg value="$username"/>
</bean>
任何想法如何使用@Value
?也许我需要包含一些我没有的 Spring 依赖项?谢谢
【问题讨论】:
您确定<context:property-placeholder>
与您的MyClass
bean 在同一个应用程序上下文中(不在父上下文中)吗?
你是对的。我将 找到问题所在。从 cmets 复制/粘贴:
您确定在与您的 MyClass bean 相同的应用程序上下文中拥有 <context:property-placeholder>
(而不是在父上下文中)吗? – axtavt
你是对的。我将<context:property-placeholder>
从ContextLoaderListener
定义的上下文移动到servlet 上下文。现在我的值被解析了。非常感谢! - 亚历克斯
【讨论】:
以上是关于Spring 3.0.5 不评估属性中的 @Value 注释的主要内容,如果未能解决你的问题,请参考以下文章
在 Spring bean 有条件地设置属性值时,SpEL 条件运算符未按预期进行评估(使用 XML 配置)
我们是不是评估 cross_val_score 的准确性,然后评估测试数据的准确性?