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

Заполнитель недвижимости для импорта /Bean Refs

Можно ли использовать свойство, загруженное из свойства-заполнителя, чтобы динамический импорт контекста?

<context:property-placeholder location="classpath*:/enterprise.properties"/>
<import resource="classpath*:/Fsb${jdbc.ctxType?:Jdbc}-context.xml"/>

Файл свойств

jdbc.ctxType=JTA

Таким образом, я могу изменить тип файла контекста, который загружается на основе свойства.

Кроме того, могу ли я сделать то же самое, чтобы сделать динамическое имя ссылки bean?

<bean id="personBusinessService" class="com.foo.PersonBusinessServiceImpl"
          p:personUidDataService-ref="personUidDataService${personUidDataService.sib?:Api}" 
          p:identifierLookupSearchService-ref="identifierLookupSearchService${identifierLookupSearchService.sib?:Api}"  
          p:contactPointBusinessService-ref="contactPointBusinessService${contactPointBusinessService.sib?:Api}"
/>

Файл свойств

personUidDataService.sib=Stub

Джей

-------------------- Обновить пример свойства для ссылки --------------------- ----

Я создал файл свойств со следующей записью:

addressLookupSearchService.sib=DaoMock

Затем у меня следующая конфигурация в Spring Контекстном файле:

<context:property-placeholder location="classpath*:/simple.properties"/>

<!-- EntityManager will be injected into DAO by JPA annotations -->
<bean id="addressSearchDao" class="com.foo.AddressSearchDaoImpl"/>

<bean id="addressSearchDaoMock" class="com.foo.MockAddressSearchDaoImpl"/>

<bean id="addressLookupSearchService" class="com.foo.AddressLookupSearchServiceImpl"
    p:baseDao-ref="addressSearch${addressLookupSearchService.sib?:Dao}"/>

И addressSearch ${addressLookupSearchService.sib?: Дао} не работает, он всегда по умолчанию bean id addressSearchDao, даже если в моем объявлении указано, что он должен установить адресSearchDaoMock.

Любые мысли о том, что я делаю неправильно?

4b9b3361

Ответ 1

Это аналогичный вопрос этого.

Импорт разрешен до bean (создание-заполнитель), поэтому вы не можете использовать чтобы определить свойства, которые вы хотите использовать в инструкции импорта. В этом случае вы должны установить свойство как system property (-Djdbc.ctxType=JTA) (см. Ссылку - пункт Примечание).

Но использование свойств файла свойств в определениях bean отлично работает - что они предназначены для: -)

Обновление. Поскольку Spring 3.1 Унифицированное управление свойствами позволяет использовать свойства даже в импорте (спасибо @Jay Blanton за упоминание об этом в комментариях).

Ответ 2

Да, вы можете. Вы можете использовать выражения в импорте и впрысках.