vendredi 24 juin 2011

Injection de logger avec Spring

Dans mon billet précédent, j'ai mis en place de l'injection contextuelle de logger avec CDI. La solution est particulièrement simple à partir du moment où on pense à utiliser l'InjectionPoint. Comme sur la plupart de projets actuels, il y a (pour l'instant) beaucoup plus de Spring Framework que de CDI, j'ai voulu reproduire l'exemple avec de l'injection par Spring.

Malheureusement, Spring n'a pas d'équivalent à InjectionPoint. Par acquis de conscience, j'ai posé la question sur le forum developpez.net et sur le forum SpringSource. C'est sur ce dernier que j'ai eu la piste la plus concrète : créer une annotation spécifique et utiliser un BeanPostProcessor. Une chose est sûr, la solution existe probablement, mais de façon moins élégante qu'en CDI.

mardi 21 juin 2011

Injection de logger avec CDI

Cette semaine, le projet Lombok a annoncé sa version 0.10 dans laquelle une nouvelle annotation @Log est annoncée. N'étant pas fan de ce projet, à cause de son coté trop magique, j'ai regardé ce qu'il fallait mettre en place pour faire quelque chose de similaire avec CDI. Plus précisément, j'ai voulu mettre en place le mécanisme d'injection pour obtenir un logger avec le moins de code possible.

L'idée n'est pas récente, puisque Seam 1 / 2 proposait déjà un mécanisme de ce type :
@Logger
private Log log;

L'intérêt de CDI est de pouvoir choisir facilement l'utilitaire de Log et de ne dépendre d'aucune API non standard.