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

 在使用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" />,使自动注入总是有效

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值