2013-04-12 6 views
3

Je suis nouveau au printemps et je rencontre un problème avec un aspect. Pointcut est une interface qui utilise un typage générique:Spring AOP Generic Typing

public interface DaoJdbc<T> { 
    public void create(T input); 
    public T read(int id); 
    public void update(T s); 
    public void delete(int id); 
    public void getDailyMessage(); 
} 

Voici mon aspect:

<aop:aspect ref="security"> 
    <aop:pointcut id="passwordNeeded" 
     expression="execution(* com.user.service.DaoJdbc.*(..))" /> 
    <aop:before pointcut-ref="passwordNeeded" method="check" /> 
</aop:aspect> 

L'aspect fonctionnera pour delete(), mais pas pour create(). Cela fonctionnera pour 'create()' si j'utilise une implémentation de DaoJdbc, au lieu de l'interface elle-même (ce que je ne veux pas faire). Je peux supposer que c'est un problème avec le fait que update() utilise un type générique et delete() non. Y a-t-il un moyen pour que cela fonctionne avec l'interface? Merci d'avance.

Répondre

2

Trouvé la solution, un signe plus est nécessaire pour indiquer un générique.

expression="execution(* com.user.service.DaoJdbc+.*(..))"