TA的每日心情 | 衰 2021-2-2 11:21 |
---|
签到天数: 36 天 [LV.5]常住居民I
|
做项目的时候,由于要用到在struts2的Action类中利用spring的AOP来实现记录操作日志,6 d t: j/ p) f, ]0 l, k5 d3 |# W
; Y1 q& y6 R9 S% a$ v- K
在Action里面的方法中加上自定义annotation来实现记录操作功能,2 V. G' h1 O! n% F6 F: h' ]
+ P$ o" a) M' G! H
运行的时候页面提示NoSuchMethodException when Aspec,5 H- R1 ]: i0 y9 ^
6 M; {- f B! \6 D网上说是Action继承了ActionSupport导致的,0 H/ ~1 P: t( c9 `' u8 |6 ~
% L4 `8 }0 c9 v+ q7 m, X
后来在一个英文网站上找到了解决的方法,( y1 t! U$ \7 @" a b1 M- m) r
8 n: r5 m# h2 D9 a& c! D
只要在Spring的配置文件applicationContext中的<aop:aspectj-autoproxy/>改为<aop:aspectj-autoproxy proxy-target-class="true"/>就可以了。
) m% o6 T) ^$ ^7 y# P9 T# ]) A- `& @3 u7 c; Z
! S# I s! A1 e- l1 w
7 l5 z$ [/ A$ |% K$ F# p8 M E# U第一步:& R @! l* ~( d
; Y1 r% r6 k# C* B在struts2的配置文件里加上以下一句:2 G5 x6 s& i/ I1 w5 Z
4 V' {. L) Q2 E4 o, E; h& r- s/ Y0 k$ O) ~
//让struts2始终先考虑spring的自动装箱2 m3 G; d7 W- Q) a' A
<constant name="struts.objectFactory.spring.autoWire.alwaysRespect" value="true" />
! C( G, e( d$ |: s P# M4 [! @# Q! ~- W; T: W% S
( u1 Q) V0 J- E. A+ P" j Q* G0 _, H2 z# s
第二步:
" R5 I4 m; L: x" C/ B& n
2 ]7 w0 i9 Y9 N, T& _2 `在配置AOP时,加上) L3 U1 F. Q @$ z' W
<!--通知spring使用cglib而不是jdk的来生成代理方法 AOP可以拦截到Controller(Action)-->$ r, r1 _( ^3 h! C
<aop:aspectj-autoproxy proxy-target-class="true"/>//关键是这句话,配置上就行了,; u. s' z- k3 M; W2 w6 F
0 F( e; W l) u9 t% j
|
|