`
freeroy
  • 浏览: 71964 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Spring AOP 拦截失效

阅读更多

最近做个人产品,

由于新模块其中一个新数据表需要关联到旧模块的一个数据表,存在主从关系,导致新旧模块进行相关操作(删除)时,需要维系完整性。

考虑到不想污染旧模块(不想旧模块感知新模块的存在),因此这里在新模块中,利用AOP拦截旧模块DAO的删除方法,使当旧模块的数据删除之前,能够先进行新模块的完整性关系删除。

 

但问题出来了,AOP拦截没办法拦截到对应的DAO方法。一开始以为是配置出错,但又没见报错。于是把DAO的拦截提升一个层次为Service的拦截,奇迹般的跑起来了,难到AOP还会鄙视DAO。

 

后来发现,原来一切的问题都在于集成,由于旧某块的DAO对应的方法(delete(Integer id))是集成与别的类,同时接口也是集成于一个公共的DAO接口,Spring进行AOP拦截的时候,如果使用代理的话,没进行父类API的检查,所以不能拦截父类继承过来的方法。硬是要如此实现的话,就只能修改SPRING的配置,使其强制使用CGLIB编译而不用代理方式。

 

由于情况比较特别,又未能发现相关解决办法,这里就贡献一下!

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics