2013-09-01 6 views
0

Я создал пользовательскую аннотацию в моем проекте mvc spring. аннотаций используется, чтобы сделать АОПSpring AOP не работает во всех методах аннотации

@Around("execution(@Cached * * (..)) && @annotation(cache)") 

Здесь аннотаций, что я создал это «Сохраненная копия», любой метод с аннотацией кэшируются в диване базы с ответом в качестве значения и аргумент метода, как его ключ.

Проблема заключается в том, что работы аннотаций (АОП) работают на контроллерах. Однако из контроллеров я звоню в разные классы и utils. Когда я добавляю аннотацию «@Cached» в вызываемых классах или функциях util, АОП не работает.

В файле XML следующее, что я объявил.

<aop:aspectj-autoproxy/> 
<context:spring-configured/> 
<context:component-scan base-package="com.abc.xyz"> 
    <!--<context:include-filter type="annotation" expression="org.aspectj.lang.annotation.Aspect"/>--> 
</context:component-scan> 


<bean id="universalController" class="com.abc.xyz.misc.UniversalController"/> 
<bean class="com.abc.xyz.api.metric.SystemTiming"/> 
<bean class="com.abc.xyz.api.annotations.URLCacheImpl"/> 

ответ

2

С Spring AOP, ваши классы, которые соответствуют в Pointcut (где вы разместили свое @Cached аннотации в данном конкретном случае) должен быть пружинными бобами. Таким образом, догадка, что я могу сделать, что ваши служебные классы, очень вероятно, не пружинными бобов, и это причина, почему они не получают тканую у вас есть два варианта, которые я могу думать:.

  1. сделать вашу утилиту классы также очищают Весенние бобы
  2. Используйте полную поддержку Aspectj - таким образом, даже если ваши классы полезности не являются весенними бобами, они были бы сплетены с советами.
Смежные вопросы