Spring 3.0.5 不评估属性中的 @Value 注释

发布于 2024-10-21 18:58:43 字数 876 浏览 9 评论 0原文

尝试将属性自动连接到 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

奈何桥上唱咆哮 2024-10-28 18:58:43

找到问题所在了。从评论中复制/粘贴:

您确定在与 MyClass bean 相同的应用程序上下文中(而不是在父上下文中)有 吗? – axtavt

你是对的。我将 ContextLoaderListener 定义的上下文移至 servlet 上下文。现在我的值被解析了。多谢! - 亚历克斯

Found what the issue was. Copy/paste from comments:

Are you sure you have <context:property-placeholder> in the same application context as your MyClass bean (not in the parent context)? – axtavt

You're right. I moved <context:property-placeholder> from the context defined by the ContextLoaderListener to the servlet context. Now my values get parsed. Thanks a lot! - alex

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文