TA的每日心情 | 衰 2021-2-2 11:21 |
---|
签到天数: 36 天 [LV.5]常住居民I
|
做项目的时候,由于要用到在struts2的Action类中利用spring的AOP来实现记录操作日志,
# O5 x) m5 K1 D4 ^5 Q% |( ~ k9 q6 C0 w }4 q" i7 I$ r
在Action里面的方法中加上自定义annotation来实现记录操作功能,: [5 \- u/ O, \- Z; h( V1 \! a Y
: g9 R$ i9 i0 s* E
运行的时候页面提示NoSuchMethodException when Aspec,$ N+ S8 _! u# V2 }! z
# h+ ~5 R7 v* I5 Z% ~
网上说是Action继承了ActionSupport导致的,# r8 z8 v7 [* y9 e
5 N9 [: o( N8 ~1 t' A/ y- o
后来在一个英文网站上找到了解决的方法,
, M" e3 i4 J8 h
0 z! Z4 b& P( p5 {: N只要在Spring的配置文件applicationContext中的<aop:aspectj-autoproxy/>改为<aop:aspectj-autoproxy proxy-target-class="true"/>就可以了。) i# W3 W/ j6 ]; V4 W* e
% J. u4 l7 X6 G( k; _1 G( E* d4 a* H% q7 D" x
" E# S. V8 e/ W第一步:
3 j2 y, j' P/ M4 d+ P7 R& _8 W% B; R' g* I w8 n
在struts2的配置文件里加上以下一句:
6 f0 h( M3 g" M3 \2 A3 H: p
' E O+ y( @) V- R; C& b" h& R1 I//让struts2始终先考虑spring的自动装箱- Z1 C& _0 L7 u* S9 ^, f! J3 ^2 P
<constant name="struts.objectFactory.spring.autoWire.alwaysRespect" value="true" />
, ~" W6 I: B7 l" H2 U7 y
: z' G0 F) g& g4 F" R. ], Y& F& C& a, G
0 o4 I" |( }! D. F3 G$ c6 H: D第二步:6 q& G5 Y# `8 U$ @ W+ J( o3 [
" g0 q4 Z( Q* K9 M在配置AOP时,加上/ q" y7 w" [6 O
<!--通知spring使用cglib而不是jdk的来生成代理方法 AOP可以拦截到Controller(Action)-->
0 `6 k2 l6 B u! a- R<aop:aspectj-autoproxy proxy-target-class="true"/>//关键是这句话,配置上就行了,
0 l0 _; n/ V; [1 z% `$ N# X& }, ]9 f0 H7 D
|
|