我的日常

登录/注册
您现在的位置:论坛 盖世程序员(我猜到了开头 却没有猜到结局) 盖世程序员 > spring AOP( 面向切面、面向方面、面向接口)
总共48087条微博

动态微博

查看: 1892|回复: 0

spring AOP( 面向切面、面向方面、面向接口)

[复制链接]

57

主题

5

听众

129

金钱

三袋弟子

该用户从未签到

跳转到指定楼层
楼主
发表于 2014-05-27 22:36:19 |只看该作者 |倒序浏览
Aop 面向切面、面向方面、面向接口) b( C& e, M: v
     程序中涉及到公共问题,集中解决
" H1 q) m  r" Y8 X2 ispring Aop中使用就动态代理
7 ?" S& @8 _8 w+ x8 }' o1 k- Z. G' D9 a     1、实现InvocationHandler2 v2 o, g; y" v
     2、生成代理对象
* z( K! ?% u+ Y; V       Proxy.newProxyInstance(objectTarget.getClass().getClassLoader(),
7 L, H! u2 N0 b3 T                                                         objectTarget.getClass().getInterfaces(),) f4 o) d! q- }  x6 m4 ~9 k
                                                         this)
' Q" V) D  D" i3 Z         3、编写invoke方法- z% ]3 ]) q" y
            执行newProxy自动执行invoke
, A  ~+ m) z4 x: H                                                             * P0 t( D; }  c
                                                         0 l6 Q( `! J$ b6 v0 ~8 \
AOP相关概念                                                      ' d8 Y# Q6 T; }# \' ^+ ~
1、关注点(concern)
0 C) R6 y7 @8 F8 l- c" D   一个关注点可以是一个特定的问题,概念、或者应用程序的兴趣点。总而言之,应用程序必须达到一个目标
' F1 c4 \' k+ @* t# D( N   安全验证、日志记录、事务管理都是一个关注点
$ [4 p  {" ?. S1 N0 q   在oop应用程序中,关注点可能已经被代码模块化了还可能散落在整个对象模型中- h: a6 ^9 n7 V9 Z' c
2、横切关注点(crosscutting concern)
1 N6 L1 a) |$ c; z   一个关注点的实现代码散落在多个类中或方法中: r/ E; B' O$ A  R
3、方面(aspect)8 v8 X% m; ]  p, ]0 M. u" P) j
   一个方面是对一个横切关注点模块化,它将那些原本散落在各处的,  o/ @3 B/ J' X2 w
   用于实现这个关注点的代码规整在一处
9 [0 m( O$ e; ?4、建议(通知)(advice)6 s. g7 P" c1 D$ p+ H0 i: c  I
   advice是point cut执行代码,是方面执行的具体实现, ~/ K( f; D# o: P) W' a! h
   前置、后置、环绕、异常通知
* J3 A( d# B: s5、切入点(pointcut) add*! E$ w2 o2 {3 g
   用于指定某个建议用到何处
7 ^) {2 {/ }' a3 B# s6、织入(weaving)
5 g0 q( y0 \% I& D) o0 X   将aspect(方面)运用到目标对象的过程
/ [2 {' v) k, Z, `0 H/ u1 q7、连接点(join point)
/ h) d- q. p) w' q/ }) r  程序执行过程中的一个点
% e# y' v! r) n% [% ]& E0 h+ [: Q5 W* M- \9 a# r
8、targetObject 目标对象
6 J6 q2 \# ?) A' Z9、proxyObject  代理对象- ?* B& R. Y2 `" [$ w

$ U  y& N0 [9 zspring AOP主要是使用是动态代理机制     
1 b0 T4 L! a1 B% `spring AOP 完成日志输出; M6 O9 f3 m/ U( ^
  前置通知
- @+ Z! q* L, F  L5 l' }# B$ ~  (1)创建目标对象, L* r: [& O0 U( T1 \2 J
  (2)创建前置通知
% A/ x+ G8 A4 T6 \7 \; K2 Y     实现MethodBeforeAdvice! @' S8 @6 I6 F$ ]
     完成before处理: H8 i  T' B5 o: l8 c7 o& z
   (3)完成代理工厂类装配
3 O, ]5 B2 h% o& @/ T0 {9 J      (a)代理类接口: O( m: c# W8 B" ]7 i8 N" P; f9 Y
      (b)通知1 w. Z  r/ j6 p7 d2 A0 a- ^7 v0 v/ m
      (c)目标对象2 e9 i9 z1 L1 u! P

# j2 G- \# W7 X: H

科帮网 1、本主题所有言论和图片纯属会员个人意见,与本社区立场无关
2、本站所有主题由该帖子作者发表,该帖子作者与科帮网享有帖子相关版权
3、其他单位或个人使用、转载或引用本文时必须同时征得该帖子作者和科帮网的同意
4、帖子作者须承担一切因本文发表而直接或间接导致的民事或刑事法律责任
5、本帖部分内容转载自其它媒体,但并不代表本站赞同其观点和对其真实性负责
6、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意
7、科帮网管理员和版主有权不事先通知发贴者而删除本文


JAVA爱好者①群:JAVA爱好者① JAVA爱好者②群:JAVA爱好者② JAVA爱好者③ : JAVA爱好者③

快速回复
您需要登录后才可以回帖 登录 | 立即注册

   

关闭

站长推荐上一条 /1 下一条

发布主题 快速回复 返回列表 联系我们 官方QQ群 科帮网手机客户端
快速回复 返回顶部 返回列表