Propriété Placeholder pour les importations / Refs Bean
Puis-je utiliser une propriété chargé de la propriété de l'espace réservé à effectuer un contexte d'importation dynamique?
<context:property-placeholder location="classpath*:/enterprise.properties"/>
<import resource="classpath*:/Fsb${jdbc.ctxType?:Jdbc}-context.xml"/>
Fichier De Propriétés
jdbc.ctxType=JTA
Ainsi, de cette façon, je pouvais changer le type de fichier de contexte qui est chargé basée sur une propriété.
Aussi, je peux faire la même chose pour faire un haricot ref name dynamique?
<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}"
/>
Fichier De Propriétés
personUidDataService.sib=Stub
Jay
--------------------Mise à jour de l'exemple de la propriété pour les ref-------------------------
J'ai créé un fichier de propriétés avec l'entrée suivante:
addressLookupSearchService.sib=DaoMock
Puis j'ai la configuration suivante, au Printemps de Fichier de Contexte:
<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}"/>
Et addressSearch${addressLookupSearchService.sib?:Dao} ne fonctionne pas, il fait toujours défaut à
le bean id de addressSearchDao même si mon bien dit qu'il doit régler à addressSearchDaoMock.
Toutes les pensées de ce que je fais de mal?
source d'informationauteur Jay Blanton
Vous devez vous connecter pour publier un commentaire.
C'est une question semblable à cette.
Les importations sont résolus avant bean (propriété de l'espace réservé) de la création, de sorte que vous ne pouvez pas utiliser le fichier de propriétés pour définir les propriétés que vous voulez utiliser dans une instruction import. Dans ce cas, vous devez définir la propriété
system property
(-Djdbc.ctxType=JTA
) (regardez le lien - paragraphe Note).Mais en utilisant le fichier de propriétés propriétés sur le haricot définitions fonctionne très bien - c'est ce qu'ils sont pour 🙂
Mise à jour: Depuis le Printemps 3.1 la Unifiée De Gestion De La Propriété permet d'utiliser les propriétés, même dans les importations (merci @Jay Blanton de mentionner cela dans les commentaires).
Oui, vous le pouvez. Vous pouvez utiliser des expressions dans les importations et les injections.