2011-03-11 12 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上下文。現在我的值被解析。非常感謝! - 亞歷