2013-04-10 12 views
34

Już wcześniej pracowałem nad innym projektem, po prostu ponownie robię to samo, ale z jakiegoś powodu to nie działa. Wiosna @Value nie odczytuje dane z pliku właściwości, ale zamiast to przyjmując wartość dosłownieSpring @Value nie radzi sobie z wartościami z pliku właściwości

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 

W moim kontrolera, gdzie mam:

@Autowired 
private AppConfig appConfig; 

Aplikacja uruchamia dobrze, ale kiedy robię

appConfig.getValue() 

zwraca

${key.value1} 

to nie rozwiąż wartość w pliku właściwości.

Myśli?

+5

Powielone http://stackoverflow.com/questions/11890544/spring-value-annotation-in-controller-class-not-evaluating-to-value-inside-pro i http://stackoverflow.com/questions/ 5275724/spring-3-0-5-doesnt-evaluation-value-adnotacja-from-properties – pedjaradenkovic

+0

Dzięki! nie znaleziono tego wątku, większość tych, które znalazłem, była związana z wartością NULL –

Odpowiedz

1

Przeczytaj komentarz od pedjaradenkovic.

Oprócz linku, który dostarcza, powodem tego nie działa jest to, że przetwarzanie @Value wymaga zamiast PropertyPlaceholderConfigurer.

+1

PropertyPlaceholderConfigurer działa dobrze dla mnie.Po prostu musiałem naprawić kontekst: skanowanie komponentów w kontekście aplikacji xml i servlet wiosna xml –

+0

@ TJ jakiej wersji wiosny używasz, proszę? – Muel

+0

Wiosna 3.2.2 Wydanie –

40

Ja również znaleźć przyczynę @value nie działa to, @value wymaga PropertySourcesPlaceholderConfigurer zamiast PropertyPlaceholderConfigurer. Zrobiłem te same zmiany i to działało dla mnie, używam wersji 4.0.3 wiosną. skonfigurowałem to za pomocą poniższego kodu w moim pliku konfiguracyjnego -

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

, który uratował mój dzień !!! –

+0

dziękuję. działa dobrze – Steph

+0

to powinno być oznaczone jako poprawna odpowiedź –

4

W moim przypadku statycznych pól nie zostanie wstrzyknięta.

2

Używam rozruchu sprężynowego, a dla mnie aktualizacja wersji od 1.4.0.RELEASE do 1.5.6.RELEASE rozwiązała ten problem.

Powiązane problemy