Spring 3.0.5 不评估属性中的 @Value 注释
尝试将属性自动连接到 Spring 3.0.5.RELEASE 中的 bean,我使用:
config.properties
:用户名=我的用户名
main-components.xml
:MyClass:
<前><代码>@Service 公共类我的类{ @Value("${用户名}") 私有字符串用户名; ... }
结果,用户名被设置为字面上 “${username}”
,因此表达式不会被解析。我对此类的其他自动连接依赖项已设置,并且 Spring 不会抛出任何异常。我还尝试添加 @Autowired
但没有帮助。
如果我将属性解析为单独的 bean,然后使用 @Autowired
+ @Qualifier
,它会起作用:
<bean id="username" class="java.lang.String">
<constructor-arg value="${username}"/>
</bean>
有什么想法如何仅使用 @Value
?也许我需要包含一些我没有的 Spring 依赖项?谢谢
Trying to auto-wire properties to a bean in Spring 3.0.5.RELEASE, I'm using:
config.properties
:username=myusername
main-components.xml
:<context:property-placeholder location="classpath:config.properties" />
MyClass:
@Service public class MyClass { @Value("${username}") private String username; ... }
As a result, username gets set to literally "${username}"
, so the expression doesn't get parsed. My other auto-wired dependencies on this class get set, and Spring doesn't throw any exception. I also tried to add @Autowired
but it didn't help.
If I parse properties to a separate bean and then use @Autowired
+ @Qualifier
, it works:
<bean id="username" class="java.lang.String">
<constructor-arg value="${username}"/>
</bean>
Any ideas how to use just @Value
? Maybe I need to include some Spring dependency that I haven't? Thank you
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
找到问题所在了。从评论中复制/粘贴:
你是对的。我将
从ContextLoaderListener
定义的上下文移至 servlet 上下文。现在我的值被解析了。多谢! - 亚历克斯Found what the issue was. Copy/paste from comments:
You're right. I moved
<context:property-placeholder>
from the context defined by theContextLoaderListener
to the servlet context. Now my values get parsed. Thanks a lot! - alex