2015-01-07 2 views
1

Я определил пользовательский PropertyPlaceholderConfigurer, который делает вызов REST для получения свойств, которые используются для разрешения заполнителей.Как заставить Spring запускать собственный пользовательский PropertyPlaceholderConfigurer _after_ запускать форсунки

Однако URL-адрес вызова REST вводится Spring. И, по-видимому, эта инъекция называется после PropertyPlaceholderConfigurer. Это вызывает исключение, так как URL-адрес является нулевым в то время, когда это необходимо для PlaceholderConfigurer.

Мне нужна курица, чтобы подойти к яйцу. Есть ли способ заставить форсунки запускать до the PlaceholderConfigurer? Если нет, может ли какой-то способ для PlaceholderConfigurer получить предварительный просмотр предстоящих инъекций?

ответ

1

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

<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> 
    <property name="order" value="1"/> 
    <property name="locations"> 
     <list> 
      <value>classpath:app.properties</value> 
     </list> 
    </property> 
    <property name="placeholderPrefix" value="$["/> 
    <property name="placeholderSuffix" value="]"/> 
</bean> 

<bean id="propertyConfigurer" class="com.acme.util.DatabasePropertyPlaceholderConfigurer"> 
    <property name="order" value="2"/> 
    <property name="dataSourceName" value="dataSource"/> 
</bean> 

В нашем случае DatabasePropertyPlaceholderConfigurer необходим доступ к Spring Bean (источник данных), поэтому мы используем BeanFactory в ставиться mergeProperties) ("метод для получения этого DataSource. В вашем случае конфигурация намного проще, поскольку вам нужно простое значение конфигурации URL.

В приведенном ниже примере может сделать трюк: (Пожалуйста, обратите внимание, что два Проектировщики использовать другой префикс/суффикс: $ [] вместо $ {})

<bean id="propertyConfigurer" class="com.acme.util.RESTPropertyPlaceholderConfigurer"> 
    <property name="order" value="2"/> 
    <property name="url" value="$[config.url]"/> 
</bean> 
Смежные вопросы