Spring

 AOP
  概念
  Spring 经典AOP实现
  Spring 2.0 基于XML声明的AOP实现
------------------------
相关概念
 面向方面(切面)的编程
  Aspect oriented Programming

 关注点(Concern)
  应用要考虑的问题或者说应用要达到的目标
  比如:业务逻辑,安全,DB事务边界,持久化,远程服务等
  在一般OOP应用中,
   安全检查,DB事务控制,日志等代码"穿插"在业务逻辑中
   这种代码被称为横切关注点(Cross Cutting Concern)

 方面(Aspect)
  就是横切关注点,在 Spring 中由Advisor表示 

 织入(Weaving)
  把 Aspect 加入到核心业务逻辑中
  织入由框架实现,不需要编程
  
 AOP的目标或意义
  将 Aspect 与 核心业务逻辑 解耦


示例:表演前观众入座
 核心接口和类:
  MethodBeforeAdvice —— 接口,需实现,提供切面前置行为
  JdkRegexpMethodPointcut —— 实现类,需配置,以正则表达式匹配方法
  DefaultPointcutAdvisor —— 实现类,需配置
  ProxyFactoryBean —— 实现类,需配置
 理解:
  代理模式  —— Actable,Actor,Broker

  Advice   —— what,要加入的行为是什么
  Pointcut  —— where , 在哪里加入行为(与哪个业务方法关联)
  Aspect   —— 即Advisor,由Advice+Pointcut组合而成
  target   —— 业务逻辑对象,Aspect 被织入的目标
  FactoryBean    —— 工厂bean,用于生成其他类型bean的bean

 修改:使用RegexpMethodPointcutAdvisor
  内置了Pointcut的Advisor

示例:观众鼓掌及抗议
 核心接口:
  AfterReturningAdvice
  ThrowsAdvice
 理解:
  Advice(what,when) —— 要做什么, 及什么时候做(与业务方法的先后关系)
  Advice 的方法的参数
 修改:  使用 MethodInterceptor
  三项全能的 Advice

示例:表演前剧院先开门 —— 又一个Aspect
 理解:
  一个目标对象可以添加多个Aspect
 
自动代理创建器
 若有多个对象需要织入Aspect,则需要一一声明相应的代理
 自动代理创建器可以使你摆脱这个麻烦
 示例:为Teacher-新Expert ,织入即有的 Aspect


XML-based AOP
 Spring 2.0 通过XML标记声明,可以将POJO定义为Aspect 。
 新标记基于 aop 的命名空间,而非 beans .

 示例:使用XML声明,使观众在演出前就座
 示例:织入观众的其他行为

 核心标记:参照 spring-reference
  aop:config —— 包含 pointcut,aspect 等,可多次出现
  aop:aspect —— 引用一个pojo,内部包含 pointcut 和 各种 advice
  aop:pointcut —— 定义一个pointcut
  aop:before
  aop:after-returning
  aop:after-throwing  —— 这三个定义不同的 advice
 示例:使用 around advice 替代以上三个
  aop:around —— 指定的方法必须满足:
  返回类型 Object
  第一个参数类型必须是 ProceedingJoinPoint
  throws Throwable

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值