2011-03-11 57 views
27

试图自动线特性在春3.0.5.RELEASE豆@Value注释,我使用的是:春3.0.5不计算从性质

  • 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}",这样的表达没有得到解析。我对这个类的其他自动连线依赖性得到了设置,并且Spring不会抛出任何异常。我也尝试添加@Autowired,但它没有帮助。

如果我解析性能到一个单独的bean,然后使用@Autowired + @Qualifier,它的工作原理:

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

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

+16

你确定你有'<背景:物业占位符>'在为你的'MyClass'豆相同的应用程序上下文(不在父上下文)? – axtavt 2011-03-11 16:47:26

+0

你说得对。我将ContextLoaderListener定义的上下文中的移到了servlet上下文中。现在我的值被解析。非常感谢! – 2011-03-11 16:54:22

+1

挺到这里做一个有用的东西是设置忽略-无法解决的,占位符,以假 - 这样的应用程序将失败,如果它不能解析的占位符 - 这是你的问题 – 2012-08-10 11:22:20

回答

18

发现了什么问题了。从评论复制/粘贴:

你确定你在同一个应用程序上下文<context:property-placeholder>为您MyClass的豆(不在父上下文)? - axtavt

你说得对。我将<context:property-placeholder>ContextLoaderListener定义的上下文移至servlet上下文。现在我的值被解析。非常感谢! - 亚历