springAOP报java.lang.NoSuchMethodException: $Proxy和使用AOP后action采用autoware注入值为null

来源:互联网 发布:c语言苏小红怎么样 编辑:程序博客网 时间:2024/06/06 05:31

 在使用spring的annotation注解通过AOP在action上进行log记录时,产生了java.lang.NoSuchMethodException: $Proxy的错误,这是由于配置不完全产生的错误

开始时的配置为:

<aop:aspectj-autoproxy />


这样采用其默认的代理方式。其默认的代理方式是采用的java的proxy代理,这种代理方式需要使用接口。故而在此我们需要使用cglib作为代理工具,所以需要修改配置为

<aop:aspectj-autoproxy proxy-target-class="true" />

这样就采用了cglib的代理方式,也就可以不使用接口。

使用cglib代理的时候不要忘了添加cglib.jar包哦!呵呵 

 

解决了上述问题后,如果你在action中使用@autoware注入参数,那么还可能会面临着注入值为null的状况:

此时解决方法为下列三选一:

1.取消@autoware注入,采用get或set注入

2.将action纳入spring管理

3.修改Struts.xml文件的属性<constant name="struts.objectFactory.spring.autoWire.alwaysRespect" value="true" />,使自动注入总是有效

 

 

 

原创粉丝点击