2010-01-13 5 views
13

pierwsze: Używam Wiosna 3.0Jak mogę wstrzyknąć wartości nieruchomości w adnotację skonfigurowany wiosny MVC 3.0 kontrolera

Mam problem podczas konfigurowania moją klasę kontrolera. Kontroler używa usługi WWW, którą chcę zdefiniować adres punktu końcowego przy użyciu pliku .properties.

@Controller 
public class SupportController { 

    @Value("#{url.webservice}") 
    private String wsEndpoint; 

    ... 

W mojej aplikacji kontekstowego pliku xml, mam zdefiniowane następująco:

<context:property-placeholder location="/WEB-INF/*.properties" /> 

Czytałem dokumentację, próbując różnych podejść (. Jak dodanie prefiksu systemProperties), ale Wciąż dostaję komunikat o błędzie informujący mnie, że nie istnieje.

pole lub właściwość 'url' może nie być znaleziono obiektu typu 'org.springframework.beans.factory.config.BeanExpressionContext'


OK. Rozgryzłem to.

Teraz w kontrolerze:

@Value("#{settings['url.webservice']") 

Następnie w konfiguracji kontekstowego mam ten "pomocnika fasoli":

<util:properties id="settings" 
location="/WEB-INF/supportweb.properties"></util:properties> 
+0

Duplikat: http://stackoverflow.com/questions/1741968/using-spring3-value-to-access-propertyplaceholderconigigurer-values – skaffman

Odpowiedz

11

To powinno działać też:

@Value("${url.webservice}") 
private String wsEndpoint; 
2

powinieneś sprawdzić, czy

<context:property-placeholder location="/WEB-INF/*.properties" /> 

jest zdefiniowana w webmvc-config.xml gdzie można tworzyć instancje @Controllers

2

mam tę konfigurację i działa prawidłowo:

<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> 
    <property name="locations"> 
     <list> 
     <value>classpath:application.properties</value> 
     </list> 
    </property> 
</bean> 

i iniejct właściwość w ten sposób

@Value("${root.log.level}") 
private String prop; 

pole jest poprawnie zainicjowane na wartość "DEBUG".

Powiązane problemy