TA的每日心情 | 衰 2021-2-2 11:21 |
---|
签到天数: 36 天 [LV.5]常住居民I
|
做项目的时候,由于要用到在struts2的Action类中利用spring的AOP来实现记录操作日志,
) H& O$ F- ~4 S+ X8 y2 o& c3 B% M& X/ o: ~
在Action里面的方法中加上自定义annotation来实现记录操作功能,: @5 N6 O" e! `; \9 z3 r( V6 \
2 B" }9 y ?5 `/ \
运行的时候页面提示NoSuchMethodException when Aspec,
2 I, \8 L- l9 p$ N- E4 [
% c) O7 x" \9 C: P$ l+ S3 k网上说是Action继承了ActionSupport导致的,
/ T8 T4 t4 Z' O' w
, t( j5 v- L2 L$ Q3 s4 s后来在一个英文网站上找到了解决的方法,
( T! h$ O' m4 |1 O: ^0 v, I; q z7 `' \# q
只要在Spring的配置文件applicationContext中的<aop:aspectj-autoproxy/>改为<aop:aspectj-autoproxy proxy-target-class="true"/>就可以了。
% m$ E9 X1 X* v: {
& `8 W" i- c* \& P2 u
7 ^- |: M( i% s) C% b2 f0 r7 F9 x
) a9 x+ G& L6 R1 W: L2 W' J第一步:
8 h$ S& |( a5 f- f; b0 P2 U+ o6 D" P$ _
在struts2的配置文件里加上以下一句:# l5 V U" Z3 B& F$ h
, k, a# S5 s/ h D! n
//让struts2始终先考虑spring的自动装箱
" h2 P5 T+ T3 K& E& J+ \<constant name="struts.objectFactory.spring.autoWire.alwaysRespect" value="true" />
; k2 T% O7 h% P7 ~8 K& _
- z* B. N$ D% ?; p/ l2 l! Q% d6 s4 s$ s& A& V; J' W
; W; R& ^ @2 M, v
第二步: I# u6 n7 k0 V# \
( v1 s- k m% u2 F/ }8 O在配置AOP时,加上( W; O3 f/ a% x
<!--通知spring使用cglib而不是jdk的来生成代理方法 AOP可以拦截到Controller(Action)-->& H- d+ z2 f* b
<aop:aspectj-autoproxy proxy-target-class="true"/>//关键是这句话,配置上就行了,
5 ^ Q6 S0 Y+ d2 z" @3 M6 U" d8 ~3 J3 E5 [$ G, b' Y8 ?
|
|