TA的每日心情 | 衰 2021-2-2 11:21 |
---|
签到天数: 36 天 [LV.5]常住居民I
|
做项目的时候,由于要用到在struts2的Action类中利用spring的AOP来实现记录操作日志,! K( e; _) z- S
9 G( d" r0 ?; G
在Action里面的方法中加上自定义annotation来实现记录操作功能,& j( O* P7 O: y6 Y9 u% }1 g. F* [
# O" s% X u* J$ X. b运行的时候页面提示NoSuchMethodException when Aspec,8 n' m- X' q8 ?! t* q
% t8 @ f4 v5 B$ [7 C# z网上说是Action继承了ActionSupport导致的,, L6 A5 c' C/ P* {# |8 I
' |2 S, n) r% L3 s7 ^9 X. S+ N% ]- ?后来在一个英文网站上找到了解决的方法,
+ \6 _5 J- X! ~; L( b: C3 V
' S c; f# t. D8 {; o只要在Spring的配置文件applicationContext中的<aop:aspectj-autoproxy/>改为<aop:aspectj-autoproxy proxy-target-class="true"/>就可以了。
# F; `! R6 q* w% R2 y* a3 |$ ^7 J
; W* T6 H2 [ E! p1 `: I
( x1 j( v7 X$ T2 |) L# v9 s7 d* q( ?8 K0 _
第一步:
9 x& p9 y m2 I. n( Y' { C0 p" T7 m' h
在struts2的配置文件里加上以下一句:
+ W9 P! F. w7 \, h8 G) J3 o1 ~( l& Q: b+ f' K
//让struts2始终先考虑spring的自动装箱
) x p5 a/ k9 V* v) \+ n( w$ n<constant name="struts.objectFactory.spring.autoWire.alwaysRespect" value="true" />
" Q) F% a8 j' N8 m! c% |2 B: z7 I9 }$ a" D& G/ w: Q* U
& a X5 E( v. R0 G/ `( a5 |
$ D) w8 N5 P) S第二步:, r4 ?! [+ l- J# U
! U$ U' G5 b/ J! G" ?7 {2 x9 s
在配置AOP时,加上
4 z# u9 L6 z6 s# ^ <!--通知spring使用cglib而不是jdk的来生成代理方法 AOP可以拦截到Controller(Action)-->& |! o( u: j6 u. `
<aop:aspectj-autoproxy proxy-target-class="true"/>//关键是这句话,配置上就行了,( }7 `" Y7 s( `" O1 o& f8 o! {! J
1 g5 Z& X; X2 \0 `3 P( j/ x |
|