2009-11-06 4 views
3

У меня есть следующая конфигурация:весна - аспект не получает применяется во время выполнения


@Aspect 
public class MyAspect { 

@Around(@annotation(SomeAnnotation)) 
public Object myMethod(ProceedingJoinPoint joinPoint) throws Throwable { 
    System.out.println("Hello..."); 
} 
} 

и имеют следующую Фасоль определение:

<beans xmlns="http://www.springframework.org/schema/beans" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:aop="http://www.springframework.org/schema/aop" 
    xsi:schemaLocation="http://www.springframework.org/schema/beans 
     http://www.springframework.org/schema/beans/spring-beans-2.5.xsd 
     http://www.springframework.org/schema/aop 
     http://www.springframework.org/schema/aop/spring-aop-2.5.xsd"> 
    <bean id="myAspect" class="MyAspect" /> 
</beans> 

Я вижу, что поведение не получает применительно к @SomeAnnotation аннотированный метод во время выполнения. Любая идея почему?

Thx.

ответ

2

Убедитесь, что класс с @SomeAnnoation создан контейнером Spring. Spring применяет AOP к классам, которые извлекаются из контейнера, создавая прокси-класс для обертывания объекта. Затем этот прокси-класс выполняет аспект до и после того, как методы этого объекта вызываются.

Если вы не уверены, попробуйте отладить, где вы используете класс. Вы должны увидеть, что объект не является экземпляром вашего класса, а прокси-объектом.

+0

+1 для отладки - хорошая проверка работоспособности. – ChssPly76

2

У вас enabled AspectJ support?

Вам нужно добавить

<aop:aspectj-autoproxy/> 

в контекст компонента.

+0

Да, у меня есть еще один файл определения bean-файла в DAO, где я делаю этот материал. Хотя код, который я опубликовал, находится на уровне сервиса. Нужно ли снова запускать автоматический прокси? – peakit

+0

Насколько я знаю, это нужно делать в контексте. Поэтому, если другой файл ** не включен ** в этот (или наоборот) ИЛИ вы используете иерархические контексты, и этот файл ** выше ** в иерархии, а другой, вам нужно снова запустить автопрокси. – ChssPly76

+0

Да, оба файла, наконец, попадают в «тот же» весенний контекст. И даже я попытался добавить автопрокси-создателя, это не помогло. Я все еще не вижу никакого поведения, которое нужно применить. – peakit

Смежные вопросы