Projets
Pages enfant
  • 1.7 Les beans Spring

Comparaison des versions

Légende

  • Ces lignes ont été ajoutées. Ce mot a été ajouté.
  • Ces lignes ont été supprimées. Ce mot a été supprimé.
  • La mise en forme a été modifiée.
Commentaire: Migrated to Confluence 5.3

...

Remarque

Ce mécanisme est rendu possible par la définition d'un bean utilisant la classe PropertyPlaceholderConfigurer de Spring dans le fichier properties/applicationContext.xml

Bloc de code
<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
  <property name="locations">
    <list>
      <value>classpath:/properties/defaults.properties</value>
      <value>classpath:/properties/config.properties</value>
      <value>file:${application.config.location}</value>
    </list>
  </property>
  <property name="ignoreResourceNotFound" value="true" />
</bean>

Ici on définit les propriétés dans le fichier defaults.properties.Elles sont éventuellement écrasées par celles définies dans config.properties.

Ici on utilise aussi la possibilité de surcharger ces valeurs par une référence à un fichier qui sera précisé par une option au lancement de la JVM (Ex : -Dapplication.config.location=/tmp/foo.properties). Afin que le propertyConfigurer ne lève pas une exception au cas où cette dernière possibilité n'est pas utilisée on positionne une des ces propriétés (ignoreResourceNotFound) pour qu'il ignore les éventuelles ressources absentes.

L'héritage de configuration

...

Bloc de code
<beans xmlns="http://www.springframework.org/schema/beans"
	       xmlns:aop="http://www.springframework.org/schema/aop"        
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
	         http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd" >
...
</beans>

HTML Comment

Récupération des beans

Il est possible de récupérer un bean à partir de son nom à partir du code JAVA. La classe BeanUtils fournie par esup-commons V1 n'est plus utilisée.

On utilise un mécanisme interne à Spring basé sur l'implémentation de org.springframework.context.ApplicationContextAware

esup-commons V2 fournit une telle implémentation qu'il suffit de déclarer dans un fichier de configuration Spring (ex : properties/applicationContext.xml) :

Bloc de code

<bean id="app_context" class="org.esupportail.commons.context.ApplicationContextHolder"/>

Depuis le code java, on utilisera :

Bloc de code

ApplicationContext springContext = ApplicationContextHolder.getContext();
DomainService domainService = (DomainService) springContext

...

.getBean("domainService");
Avertissement
  • L'utilisation de cette méthode devrait rester exceptionnelle (mode batch par exemple)