TA的每日心情 | 衰 2021-2-2 11:21 |
---|
签到天数: 36 天 [LV.5]常住居民I
|
做项目的时候,由于要用到在struts2的Action类中利用spring的AOP来实现记录操作日志,5 k4 i7 ?$ q* W; O: r& r9 G
3 r7 C9 k' g& M. r
在Action里面的方法中加上自定义annotation来实现记录操作功能,
; b' U' a& O( ~
5 |9 b) g+ E- n: E# ]5 R7 |" a* S+ \运行的时候页面提示NoSuchMethodException when Aspec,
! S+ R' B: K A5 \+ Q7 I# O9 Q
) Z3 z+ P! V- o- T, W4 o* a- Q网上说是Action继承了ActionSupport导致的,
; b. V* d' e, ]8 \
/ Q4 I/ C$ a$ k0 u; M后来在一个英文网站上找到了解决的方法,9 K5 L2 D$ T: A* v/ K3 U1 Z
+ \& I" g3 R5 t; \4 ]( z
只要在Spring的配置文件applicationContext中的<aop:aspectj-autoproxy/>改为<aop:aspectj-autoproxy proxy-target-class="true"/>就可以了。: Z* B ?2 o; W# W
|) W3 P# C3 Z! V
1 A# b$ g/ p1 F
) N; u4 s. N0 ^2 Y
第一步:
, `; O( V5 g3 u. a8 C4 t3 p$ a% U( _% E) R
在struts2的配置文件里加上以下一句:
/ k9 T+ m& l- [, y; Z5 T+ z* s; x$ D; }$ T" D
//让struts2始终先考虑spring的自动装箱
* i* N# ^# d- H# H! T# L<constant name="struts.objectFactory.spring.autoWire.alwaysRespect" value="true" />
$ H% c- i9 M& g- i+ W2 z6 ~, |" O& R8 Y% V3 [$ A
: w g# w) Q" t3 Q6 N+ z h& |3 @- D: ?9 Y
第二步:* r0 g7 W4 {6 o: }+ F" }' F) z- ~
) E/ `8 K' k& \0 S8 a! h
在配置AOP时,加上
7 k1 M" t& @2 i" t <!--通知spring使用cglib而不是jdk的来生成代理方法 AOP可以拦截到Controller(Action)--> k: L5 {3 `( b) p0 n+ s& A
<aop:aspectj-autoproxy proxy-target-class="true"/>//关键是这句话,配置上就行了,
# S. @( }. l9 F$ {9 z+ N% i7 D7 j9 @& }
|
|