一尘不染

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

spring

尝试在Spring 3.0.5.RELEASE中自动将属性连接到Bean ,我正在使用:

  • config.properties:
username=myusername
  • main-components.xml:
<context:property-placeholder location="classpath:config.properties" />
  • MyClass:
@Service
public class MyClass {

    @Value("${username}")
    private String username;
    ...
}

结果,username被设置为字面值 "${username}",因此表达式不会被解析。我对该类的其他自动关联依赖关系已设置,并且Spring不会引发任何异常。我也尝试添加,@Autowired但没有帮助。

如果我将属性解析为单独的bean,然后使用@Autowired+ @Qualifier,那么它将起作用:

<bean id="username" class="java.lang.String">
    <constructor-arg value="${username}"/>
</bean>

任何想法如何使用只是@Value?也许我需要包括一些我没有的Spring依赖项?谢谢


阅读 331

收藏
2020-04-20

共1个答案

一尘不染

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

你确定<context:property-placeholder>与MyClass bean在同一个应用程序上下文中(not in the parent context)吗?– axtavt

你是对的。我<context:property-placeholder>从定义的上下文转移ContextLoaderListener到servlet上下文。现在,我的值被解析了。非常感谢

2020-04-20