spring使⽤aspect注解切⾯不起作⽤的排查过程及解决今天做spring使⽤aspect注解demo,发现不起作⽤,问题排查如下:
1.程序正常启动,说明jar包依赖没有问题
2.debug程序不进⼊切⾯,有可能是路径问题,根据这个思路,果真是路径问题,在切⾯配置类的使⽤@ComponentScan的路径写错了。
扫描的路径为:注解类、切⾯类及service的上⼀层⽬录即可,假设项⽬的结构如下:
则@ComponenScan("")即可
SpringBoot切⾯@aspect--- 注解在嵌套⽅法不⽣效的问题
例如在service中⽅法如下
@PermissionAop
@Override
public List<PoiPermission> getList() {
List<PoiPermission> list = this.list();
return list;
}
@Override
public void test(){
System.out.println("");
}
controller中调⽤test()⽅法,test⽅法中调⽤切⾯⽅法,切⾯不⽣效,⽆法进⼊切⾯。
使⽤如下⽅式可解决该问题(启动类上需要添加
@EnableAspectJAutoProxy(exposeProxy = true))
@PermissionAop
@Override
public List<PoiPermission> getList() {
List<PoiPermission> list = this.list();
return list;
}
@Override
public void test(){
IPoiPermissionService service = (IPoiPermissionService) AopContext.currentProxy();
System.out.println("");
}
其中IPoiPermissionService为该service类实现的接⼝。springboot aop
以上为个⼈经验,希望能给⼤家⼀个参考,也希望⼤家多多⽀持。