Подтвердить что ты не робот

Как я могу ввести значение свойства в сконфигурированный аннотацией контроллер spring mvc 3.0

Во-первых: я использую Spring 3.0

У меня возникла проблема при настройке моего класса контроллера. Контроллер использует веб-службу, которую я хочу определить для адреса конечной точки, используя файл .properties.

@Controller
public class SupportController {

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

    ...

В моем xml файле контекста приложения я определил это:

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

Я читал документацию, пытаясь использовать разные подходы (например, добавить префикс systemProperties.), но я продолжаю получать сообщение об ошибке, сообщающее мне, что его не существует.

Поле или свойство 'url' не может быть найденный на объекте типа 'org.springframework.beans.factory.config.BeanExpressionContext'


Ok. Я понял это.

Теперь в контроллере:

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

Тогда в конфигурации контекста у меня есть этот "помощник bean":

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

Ответ 1

Это тоже должно работать:

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

Ответ 2

вы должны проверить, что

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

определяется в webmvc-config.xml, где вы создаете экземпляры @Controllers

Ответ 3

У меня есть эта конфигурация, и она отлично работает:

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

и я таким образом реализую свойство

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

поле правильно инициализируется значением "DEBUG".