2013-04-10 5 views
34

Ich hatte dies funktioniert in einem anderen Projekt, ich bin nur Wiederholung der gleichen Sache, aber aus irgendeinem Grund funktioniert es nicht. Der Frühling @Value liest nicht von Immobilien-Datei, sondern es ist der Wert buchstäblichSpring @ Value ist nicht resolving zu Wert von Eigenschaft Datei

AppConfig.java

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

    public String getValue() 
    { 
     return value; 
    } 
} 

applicationContext.xml unter:

<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 

In meinem Controller, wo ich:

@Autowired 
private AppConfig appConfig; 

Die Anwendung nur gut startet, aber wenn ich

appConfig.getValue() 

tun gibt es

${key.value1} 

Es ist nicht Auflösen auf den Wert in der Eigenschaftendatei.

Gedanken?

+5

Duplizieren http://Stackoverflow.com/questions/11890544/spring-value-annotation-in-controller-class-not-evaluating-to-value-inside-pro und http://stackoverflow.com/questions/ 5275724/spring-3-0-5-doesnt-evaluate-value-annotation-from-properties – pedjaradenkovic

+0

Vielen Dank! habe diesen Thread nicht gefunden, die meisten, die ich gefunden habe, bezogen sich auf den Wert NULL –

Antwort

1

Lesen Sie den Kommentar von pedjaradenkovic.

Weiter zu der Verknüpfung, die er bietet, ist der Grund, warum dies nicht funktioniert, dass @Value Verarbeitung erfordert PropertySourcesPlaceholderConfigurer anstelle von PropertyPlaceholderConfigurer.

+1

PropertyPlaceholderConfigurer funktioniert gut für mich.Ich musste nur den Kontext reparieren: component-scan in meinem App-Kontext xml und spring servlet xml –

+0

@TS welche Version des Frühjahrs benutzt du, bitte? – Muel

+0

Spring 3.2.2 Release –

40

Ich fand auch den Grund @value nicht funktioniert ist, @value erfordert PropertySourcesPlaceholderConfigurer anstelle eines PropertyPlaceholderConfigurer. Ich machte die gleichen Änderungen und es funktionierte für mich, ich benutze Frühling 4.0.3 Release. I konfigurierte dies unter Code in meiner Konfigurationsdatei -

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

das rettete meinen Tag !!! –

+0

danke dir. es funktioniert super – Steph

+0

das sollte als richtige Antwort markiert werden –

4

In meinem Fall statische Felder nicht injiziert werden.

2

Ich benutzte Spring Boot, und für mich die Aktualisierung der Version von 1.4.0.RELEASE zu 1.5.6.RELEASE löste dieses Problem.

Verwandte Themen