SpringAOP拦截struts2的action的一点心得

因为要搞细粒度的方法权限控制,spring的AOP今天算了把老夫彻底搞的无语了,因为项目中dao层存在了spring的transaction注解,老是报classnotfoundexception,网上找了一大堆资料,各种问题排查完了,发现毛用都没有,后来想着会不会是cglib的问题,于是去掉了强制cglib的配置声明,resin启动终于不报错了。

可是在进入action的时候,发现还是有问题,com.sun.$proxy27.XX(对应aspect的那个action的method)出现methodnotfoundexception,这回彻底凌乱了,回去找cglib的官方文档,蓦然回首啊,这尼玛我手贱早干嘛去了,发现cglib的2和3版本存在差异,而对目前spring(我用的是3.2M1)和整合进去的asm来说,他就认识2的,于是换成cglib-nod-2的版本,强制使用cglib代理,这回终于没问题啦,不过后来想想aspect拦截action层好像不太符合美感,就换成拦截service层,action使用struts的interceptor,两个一起上,aspect用于拦截权限和方法后做异常日志,interceptor用来做ip、账号的拦截,这回OK啦。

另外,项目中遇到一个蛮搞笑的问题,貌似如果对实现类使用@Service注解,@transcation偶尔会报错,改成@component就没问题了,可能是datasource不能放在service注入导致偶尔识别不了,不过偶尔出现,这个理由不科学吖

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值