...
Sommaire :
| Sommaire | ||
|---|---|---|
|
...
Les fichiers de configuration
Spring permet de créer des objets (appelés alors beans) en les déclarant dans un fichier de configuration XML.
...
Il est possible, suivant les besoins de votre application, de supprimer ou d'ajouter des fichiers de configuration spécialisés.
L'injection de données
Une des caractéristiques de base de Spring est de permettre l'injection de données.
...
Voyons quelques exemples.
Injection d'une chaîne de caractères
| Bloc de code |
|---|
<property name="recipientEmail" value="webmaster@domain.edu"/> |
Dans ce cas, la méthode setRecipentEmail() sera appelée avec la valeur webmaster@domain.edu.
Injection d'un autre bean
| Bloc de code |
|---|
<property name="authenticationService" ref="authenticationService"/> |
On voit ici un autre aspect important de Spring qui est l'utilisation quasi systématique des interfaces. La classe CachingEmailExceptionServiceFactoryImpl (qui correspond au bean exceptionServiceFactory et contient la définition de cette propriété authenticationService) a un attribut authenticationService de type AuthenticationService. AuthenticationService est une interface. Le bean authenticationService doit être d'une classe qui implémente cette interface. Ceci permet d'avoir plusieurs implémentations possibles de cette interface et de choisir, simplement en modifiant un fichier de configuration, laquelle on utilise. Cette approche est particulièrement intéressante. Elle permet, par exemple, de très facilement tester une couche de l'application en branchant des implémentations de tests des autres couches avec lesquelles le bean doit interagir.
Injection d'une map
| Bloc de code |
|---|
<property name="exceptionViews" >
<map>
<entry key="java.lang.Exception" value="go_exception" />
</map>
</property>
|
Injection d'une liste
| Bloc de code |
|---|
<property name="servers">
<list>
<ref bean="smtpServer1" />
<ref bean="smtpServer2" />
</list>
</property>
|
Utilisation de paramètres
Afin de centraliser la configuration une bonne pratique consiste à utiliser un fichier de configuration centralisant les paramètres de l'application. Ceci évite notamment de devoir modifier n fichiers différents.
...
| 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
|
L'héritage de configuration
Spring n'oblige pas à saisir, dans toutes les définitions de beans, les mêmes propriétés. Pour cela, il est possible d'utiliser le mot-clé parent.
...
| Remarque |
|---|
L'attribut scope (voir ci-après) n'est pas héritable, il est donc inutile de le préciser pour un bean abstrait. |
Vérification des beans
Les beans manipulés par Spring n'ont pas, par défaut, de dépendances particulières avec Spring.
...
| Bloc de code |
|---|
public void afterPropertiesSet() {
super.afterPropertiesSet();
if (!StringUtils.hasText(exceptionView)) {
exceptionView = DEFAULT\__SERVLET_\_EXCEPTION_VIEW;
logger.info(getClass() + ": no exceptionView set, using default \[" + exceptionView + "\]");
}
}
|
Portée des beans
Spring offre une notion de portée (scope).
...
| Bloc de code |
|---|
<beans xmlns="http://www.springframework.org/schema/beans" 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"> |
Récupération des beans
Lorsque l'on veut récupérer un bean à partir de son nom, il faut obligatoirement utiliser la classe BeanUtils fournie par esup-commons.
...