Я пытаюсь выполнить метод до того, как вызывается сеттер класса с именем @Entity. Поэтому у меня есть этот код сейчас:AspectJ не работает с классами без интерфейса
@Component
@Aspect
public class Observable {
@Before("execution(* br.com.persistence.Transaction.setStatus(..))")
public void beforeSetStatus(JoinPoint joinPoint) {
System.out.println(joinPoint.getSignature().getName());
}
}
Мой pom.xml:
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjrt</artifactId>
<version>1.6.1</version>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjtools</artifactId>
<version>1.6.1</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
<version>${spring.version}</version>
</dependency>
...
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>aspectj-maven-plugin</artifactId>
<version>1.7</version>
<configuration>
<source>1.6</source>
<target>1.6</target>
<complianceLevel>1.6</complianceLevel>
</configuration>
<executions>
<execution>
<goals>
<goal>compile</goal>
</goals>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjrt</artifactId>
<version>1.8.5</version>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjtools</artifactId>
<version>1.8.5</version>
</dependency>
</dependencies>
</plugin>
И в spring.xml я добавил:
<aop:aspectj-autoproxy proxy-target-class="true"/>
Если я пытаюсь Pointcut интерфейс , он работает правильно, но он не работает с классами в настойчивости. Я не знаю, связано ли это с тем, что они не реализуют интерфейс или из-за аннотации @Entity, которая вызывает беспокойство.
Вы должны знать, что с этой конфигурацией, указанной выше, вы используете Spring AOP и __not__ AspectJ. –
Могу ли я достичь того, что хочу с Spring AOP? Называть класс без интерфейса? –
Spring AOP применяется только к весенним управляемым бобам. Я не уверен, к чему вы пытаетесь применить аспект. См. Этот вопрос для объяснения http://stackoverflow.com/q/1606559/2699901 –