2013-04-10 20 views
34

Ho già lavorato in qualche altro progetto, sto solo rifacendo la stessa cosa ma per qualche motivo non funziona. La primavera @Value non è la lettura dal file di proprietà, ma invece sta prendendo il valore letteralmenteSpring @Value non risolve il valore dal file di proprietà

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 

Nel mio controller, dove ho:

@Autowired 
private AppConfig appConfig; 

l'applicazione si avvia bene, ma quando lo faccio

appConfig.getValue() 

restituisce

${key.value1} 

Non fa risolvere il valore all'interno del file delle proprietà.

Pensieri?

+5

Duplicato http://stackoverflow.com/questions/11890544/spring-value-annotation-in-controller-class-not-evaluating-to-value-inside-pro e http://stackoverflow.com/questions/ 5275724/spring-3-0-5-doesnt-valutare-valore-annotazione-da-proprietà – pedjaradenkovic

+0

Grazie! non ho trovato quel thread, la maggior parte quelli che ho trovato era correlato al valore NULL –

risposta

1

Leggere il commento di pedjaradenkovic.

Oltre al collegamento fornito, il motivo per cui questo non funziona è che l'elaborazione @Value richiede un PropertySourcesPlaceholderConfigurer anziché uno PropertyPlaceholderConfigurer.

+1

PropertyPlaceholderConfigurer funziona bene per me.Ho solo bisogno di correggere il contesto: componente-scan nel mio contesto app xml e servlet molla xml –

+0

@TS quale versione di primavera stai usando, per favore? – Muel

+0

Spring 3.2.2 Release –

40

Ho anche trovato il motivo per @value non funzionava è, @value richiede PropertySourcesPlaceholderConfigurer invece di un PropertyPlaceholderConfigurer. Ho fatto gli stessi cambiamenti e ha funzionato per me, sto usando la versione 4.0.3 di primavera. ho configurato questo usando sotto codice nel mio file di configurazione -

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

che mi ha salvato la giornata !!! –

+0

grazie. funziona benissimo – Steph

+0

questo dovrebbe essere contrassegnato come risposta corretta –

4

Nel mio caso, non saranno iniettati campi statici.

2

Stavo usando l'avvio a molla, e per me l'aggiornamento della versione da 1.4.0.RELEASE a 1.5.6.RELEASE ha risolto questo problema.

Problemi correlati