Spring: инициализация свойств перед созданием любого компонента - PullRequest
0 голосов
/ 04 ноября 2018

У меня есть следующая структура проекта -

Фасад -> Сервис-> DAO

На уровне DAO при инициализации bean-компонентов многие зависимости внедряются из файла свойств. Следовательно, сначала необходимо прочитать файл свойств, а затем создать оставшиеся компоненты dao. Когда приложение запускается, оно выдает ошибку, что Spring не может разрешить заполнитель.

DAO-application-context.xml похож на

<bean 
    class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">

    <property name="prop">
        <value>app.properties</value>
    </property>
</bean>

<import resource = "a-dao.xml" />
<import resource = "b-dao.xml" />
<import resource = "c-dao.xml" />

Теперь во всех контекстах дочерних приложений, то есть a-dao и т. Д., Мы имеем -

<bean ....>
  <property name = "xyz">
    <value>${appValue}<value/>
  </property>
<bean>

Получена ошибка, что appValue не может быть решена. Я думаю, что это может быть связано с неправильной последовательностью создания бина. Однако тот же конфиг работает в другом более крупном проекте.

Я проверил Порядок инициализации Spring Bean , но реализация этого решения была бы невозможна. Есть ли другой способ?

1 Ответ

0 голосов
/ 05 ноября 2018

Reg this Block of Configuration, свойство prop кажется неправильным

<bean 
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">

<property name="prop">
    <value>app.properties</value>
</property>
</bean>

Согласно документации Spring Вы можете использовать свойство location или location , чтобы установить одно или несколько значений файла свойств.

Таким образом, код должен быть изменен на

<bean 
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location">
    <value>app.properties</value>
</property>
</bean>
...