shiro 注解不起作用bug 解决 - 点滴记忆*记忆点滴
收藏本站

shiro 注解不起作用bug 解决

环境: spring 3.2.5 + struts2 + shrio 1.2

为使用aop 注解,根据官方文档增加拦截器。


	<bean class="org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator" depends-on="lifecycleBeanPostProcessor">
		<property name="proxyTargetClass" value="true" />
	</bean>
	
	<bean id="shiroAdvisor" class="com.ichangyan.tsp.common.security.AuthorizationAdvice">
	    <property name="securityManager" ref="securityManager"/>
	</bean>


预想service 层不会有问题,因为service 层完全是spring 关联。action 层需要测试。

测试结果很诧异,action 层注解没有问题,反而service 层不起作用,且任何提示没有,也没任何错误,只是简单的忽略了注解。


本以为是拦截器问题,另起项目测试,拦截器没任何问题。后面注解到 service 接口方法上,终于报错了,什么final 不能被代理,但系统注解的类并没有final。 不过可以分析出肯定与cglib的代理有关。 debug 发现拦截起作用了,但拦截到我们注解方法的时候发现,target 是个代理类com.sun.**。 原因终于出来了,前面还有拦截器在起作用了,经排查原来是事务拦截器,真原因是找到了解决也就简单了。

把<tx:annotation-driven> 加上proxy-target-class="true" 即可了。

原因jdk 代理注解不会被继承。






    留下足迹