Spring 4 : ‘Bean Aliasing’ ou comment personnaliser des beans de composants externes

logo-spring-highres

Dans certaines situations, nous souhaitons pouvoir redéfinir (décorer) un bean spring défini dans un composant externe non modifiable (ou non souhaitable de le modifier).

C'est le cas d'un projet complexe multi-modules, où nous voulons, pour les tests d'intégration, redéfinir des beans dataSource sans dupliquer ni le code ni xml.

Cela est possible avec spring via l'annotation @Bean  (ou le tag <alias) en précisant plusieurs valeurs à l'attribut "name". Nous donnons plus de détails ci-après.

Hibernate Validator et Spring: Utiliser Javascript dans Java (JSR 223)

Hibernate Validator (HV) est l'implémentation de référence de la JSR 303.

La JSR 223 permet de réutiliser les langages de scipt dans le monde java comme nous le montrons ci-après avec HV 4.2.

La version HV 4.2 apporte de nouvelles fonctions simplifiant la vie du développeur.

Ces améliorations répondent à des besoins concrets et n'exigent pas d'écrire du code.

Quelques annotations suffiront.

La démo ci-après détaille quelques notions avancées de HV 4.2.

Elle permet de valider deux propriétés inter-dépendantes, par exemple:

- Vérifier que deux propriétés (mail, motdepasse, ...) sont identiques.

- Comparer une propriété à une autre.

Ces différentes validations se feront via un language de script.

Spring3 : Combiner les modes de configuration du conteneur

Comme l'indique le titre, à l'aide d'une démo réaliste on montre comment combiner les trois modes de configuration de Spring 3.
Précisément, on illustre comment la classe annotée @Configuration gère aussi les beans déclarés dans un fichier xml ou par
les annotations (@Component ou ses dérivées).
Pourquoi ce mélange ?
Je vous l'accorde, ce n'est pas l'idéal!
Néanmoins, c'est un cas de figure réel quand on récupère un projet existant.
Ce billet combine les trois configurations et prouve que tout fonctionne parfaitement avec une seule précaution.
Laquelle ?
La suite du billet en apporte la réponse.