手写Spring高级源码(六): Spring AOP 应⽤

第六部分 Spring AOP 应⽤

 
AOP 本质:在不改变原有业务逻辑的情况下增强横切逻辑,横切逻辑代码往往是权限校验代码、⽇志代码、事务控制代码、性能监控代码。

 

第1节 AOP 相关术语

1.1 业务主线

 
在讲解AOP术语之前,我们先来看⼀下下⾯这两张图,它们就是第三部分案例需求的扩展(针对这些扩展的需求,我们只进⾏分析,在此基础上去进⼀步回顾AOP ,不进⾏实现)

 

上图描述的就是未采⽤ AOP 思想设计的程序,当我们红⾊框中圈定的⽅法时,会带来⼤量的重复劳动。程序中充斥着⼤量的重复代码,使我们程序的独⽴性很差。⽽下图中是采⽤了AOP 思想设计的程序,它把红框部分的代码抽取出来的同时,运⽤动态代理技术,在运⾏期对需要使⽤的业务逻辑⽅法进⾏增强。

 

1.2 AOP 术语

连接点:⽅法开始时、结束时、正常运⾏完毕时、⽅法异常时等这些特殊的时机点,我们称之为连接点,项⽬中每个⽅法都有连接点,连接点是⼀种候选点
切⼊点:指定 AOP 思想想要影响的具体⽅法是哪些,描述感兴趣的⽅法
Advice 增强:
第⼀个层次:指的是横切逻辑
第⼆个层次:⽅位点(在某⼀些连接点上加⼊横切逻辑,那么这些连接点就叫做⽅位点,描述的是具体的特殊时机)
Aspect 切⾯:切⾯概念是对上述概念的⼀个综合
Aspect 切⾯ = 切⼊点 + 增强 = 切⼊点(锁定⽅法) + ⽅位点(锁定⽅法中的特殊时机) + 横切逻辑
众多的概念,⽬的就是为了锁定要在哪个地⽅插⼊什么横切逻辑代码

第2节 Spring中AOP的代理选择

Spring 实现 AOP 思想使⽤的是动态代理技术
默认情况下, Spring 会根据被代理对象是否实现接⼝来选择使⽤ JDK 还是 CGLIB 。当被代理对象没有实现任何接⼝时,Spring 会选择 CGLIB 。当被代理对象实现了接⼝, Spring 会选择 JDK 官⽅的代理技术,不过我们可以通过配置的⽅式,让Spring 强制使⽤ CGLIB

第3节 Spring中AOP的配置⽅式

Spring AOP 配置中,也和 IoC 配置⼀样,⽀持 3 类配置⽅式。
  • 第⼀类:使⽤XML配置
  • 第⼆类:使⽤XML+注解组合配置
  • 第三类:使⽤纯注解配置

第4节 Spring中AOP实现

需求:横切逻辑代码是打印⽇志,希望把打印⽇志的逻辑织⼊到⽬标⽅法的特定位置 (service transfer
⽅法 )

4.1 XML 模式

Spring 是模块化开发的框架,使⽤ aop 就引⼊ aop jar
  • 坐标
<dependency>
 <groupId>org.springframework</groupId>
 <artifactId>spring-aop</artifactId>
 <version>5.1.12.RELEASE</version>
</dependency> <dependency>
 <groupId>org.aspectj</groupId>
 <artifactId>aspectjweaver</artifactId>
 <version>1.9.4</version>
</dependency>
  • AOP 核⼼配置
<!--
 Spring基于XML的AOP配置前期准备:
 在spring的配置⽂件中加⼊aop的约束
 xmlns:aop="http://www.springframework.org/schema/aop"
 http://www.springframework.org/schema/aop 
https://www.springframework.org/schema/aop/spring-aop.xsd 
 
 Spring基于XML的AOP配置步骤:
 第⼀步:把通知Bean交给Spring管理
 第⼆步
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值