我已经解决了许多SO问题,以了解Spring AOP上的配置,但我无法找到解决问题的方法。因此简要介绍了配置
获得maven多模块项目,包含4个模块boot,service,dao和aop。
在启动maven模块中执行BeanInitialization classe
package a.b.c;
// imports . . .
@Configuration
@EnableAspectJAutoProxy
public class BeanInitialization {
@Bean
public MyAspect getMyAspect(){
return new MyAspect();
}
@Bean MyDaoImpl getMyDaoImpl(){
return new MyDaoImpl();
}
// more initializations goes here
}
MyDaoImpl.java如下表单服务模块
package d.e.f;
// imports . . .
public class MyDaoImpl implements MyDao{
public ReturnObject create(param1, param2){
// some logic goes here
}
// some other methods
}
来自aop maven模块的MyAspect.java
package x.y.z;
@Aspect
public class MyAspect(){
@After("execution(public * d.e.f.MyDaoImpl.create(..))")
public void doStuffAfterMethodExecution(){
// do some stuff here
}
}
Serivce图层只调用dao图层。
我经历了很多形式和问题。据我所知,每一个配置都很好。除了这些之外,在完成create方法时没有执行建议。
我在这里遗漏了什么吗?
以下是我有的mavne依赖
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>4.1.8.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
<version>4.1.8.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aspects</artifactId>
<version>4.1.8.RELEASE</version>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>1.7.4</version>
</dependency>
我还包括了aspectj运行时依赖项。什么都没有成功。有人可以帮忙吗?
提前致谢
添加了调试堆栈跟踪 在这里,我想在DAO执行中的create方法完成后运行我的建议。 注意:为简单起见,我在上面的代码中修改了类名。控制流就像是身份验证过滤器,REST控制器,服务,最后是DAO
在Aspect中为REST控制器添加了@Before建议,如下所示,但是没有执行
@Before("execution(* <<package_Hierarchy>>.ResourceController.create(..)");
根据堆栈跟踪,它在控制器上创建了CGLIB代理(没有接口实现),但是没有在DAo对象上创建Java Dynamci代理