2013-04-10 112 views
34

解決價值我以前曾在其他一些項目中這方面的工作,我只是重新做同樣的事情,但由於某種原因,它不工作。春季@Value不是從屬性文件讀取,而是它的取值爲字面上春天@Value不是從屬性文件

AppConfig.java

@Component 
public class AppConfig 
{ 
    @Value("${key.value1}") 
    private String value; 

    public String getValue() 
    { 
     return value; 
    } 
} 

的applicationContext.xml:

<context:component-scan 
    base-package="com.test.config" /> 
<context:annotation-config /> 

<bean id="appConfigProperties" 
    class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> 
    <property name="location" value="classpath:appconfig.properties" /> 
</bean> 

appconfig.properties

key.value1=test value 1 

在我的控制,我在那裏有:

@Autowired 
private AppConfig appConfig; 

應用程序啓動就好了,但是當我做

appConfig.getValue() 

返回

${key.value1} 

它不解析爲屬性文件中的值。

想法?

+5

Duplicated http://stackoverflow.com/questions/11890544/spring-value-annotation-in-controller-class-not-evaluating-to-value-inside-pro和http://stackoverflow.com/questions/ 5275724/spring-3-0-5-doesnt-evaluation-value-annotation-from-properties – pedjaradenkovic 2013-04-10 22:29:14

+0

謝謝!沒有發現線索,最讓我找到了那些被相關值爲NULL – 2013-04-11 12:55:57

回答

1

有pedjaradenkovic的評論的讀。

繼他提供了一個鏈接,這是不工作的原因是@Value處理需要PropertySourcesPlaceholderConfigurer而不是PropertyPlaceholderConfigurer

+1

PropertyPlaceholderConfigurer爲我的作品就好了。我只需要修復上下文:組件掃描在我的應用程序上下文中xml和spring servlet xml – 2013-04-11 12:56:38

+0

@TS請問您使用的是什麼版本的spring? – Muel 2013-04-11 13:15:47

+0

Spring 3.2.2版本 – 2013-04-14 04:24:43

40

我還發現@value不工作的原因,@value需要PropertySourcesPlaceholderConfigurer代替PropertyPlaceholderConfigurer。我做了相同的更改,它對我有用,我使用的是Spring 4.0.3版本。 我這個使用下面的代碼在我的配置文件進行配置 -

@Bean 
public static PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer() { 
return new PropertySourcesPlaceholderConfigurer(); 
} 
+1

保存我的一天! – 2015-06-18 08:24:33

+0

謝謝。它的效果很好 – Steph 2015-11-04 10:37:54

+0

這應該被標記爲正確的迴應 – 2016-08-05 20:54:01

4

在我的情況下,靜態字段將不會被注入。

2

我用春天啓動,併爲我升級版本,從1.4.0.RELEASE1.5.6.RELEASE解決了這個問題。