Salut,

J'ai un aspect qui déclare un pointcut basé sur une annotation :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
"@annotation(my.package.MyAnnotation)"
J'ai un bean Spring abstrait et générique :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
public abstract class MyAbstractBeanBOImpl<T extends MyGenericType> extends
		AbstractBOImpl<T> implements MyAbstractBeanBO {
Ce bean déclare une méthode update :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
public T update(T entity) {
J'ai un bean Spring typé qui étend MyAbstractBeanBOImpl et surcharge la méthode update :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
@MyAnnotation("XXX")
         @Override
	public MyTypedType update(MyTypedType entity) {
Ce bean est configuré pour exposer un proxy avec proxy-target-classes à true.

AOP ne se déclenche pas lors de l'appel de la méthode update de ImageBOImpl.
AOP se déclenche si j 'annotation la méthode update de MyAbstractBeanBOImpl avec @MyAnnotation.

Le problème c'est que je passe un paramètre à l'annotation, qui est spécifique au contexte de ma classe fille...donc il faut qu'elle soit mise sur la méthode de la classe fille.

En fait on dirait qu'AOP se base sur la signature de la méthode parent. C'est normal ?

J'ai regardé dans Spring Security (qui déclenche un aspect sur l'annotation @Secured) car le comportement n'est pas le même. Dans leur cas, ils ont un intercepteur à l'instanciation du bean qui pointe toutes les méthodes annotées @Secured et qui stocke dans un cache le paramètre de l'annotation, cache qui est lu ensuite lors de l'exécution de l'aspect. J'espère pouvoir arriver à faire ce que je fais sans avoir à coder un truc pareil.

Une idée ?