SoringAOP与代理模式

一、AOP概述

1. 什么是AOP

  • AOP(Aspect Oriented Programing) 面向切面编程
  • AOP 采取横向抽取机制,取代了传统的继承纵向继承体系重复性代码(性能监视、事务管理、安全检查、缓存)
  • Spring 的AOP 采用了纯Java 实现,不需要专门的编译过程和类加载器,在运行期间通过动态代理的方式向目标类注入增强代码。

2. AOP的应用场景

  1. 在不修改源代码的情况下对程序进行增强
  2. 权限校验、日志记录、性能监控、事务控制

3. AOP的底层实现

代理机制
Spring的AOP的底层用到两种代理机制

  • JDK的动态代理 针对实现了接口的类产生代理
  • CGLIB的动态代理 针对没有实现接口的类产生代理

二、什么是代理模式

1. 代理模式的概述

  代理(Proxy)是一种设计模式,提供了对目标对象另外的访问方式;即通过代理对象访问目标对象,这样做的好处是:可以在目标对象实现的基础上,增强额外的功能操作,即扩展目标对象的功能。
  这里使用到编程种的一个思想:不要随意去修改别人已经写好的代码或者方法,可以通过代理的方式来扩展该方法。(对修改关闭,对扩展开放)

2. 代理模式的分类

  1. 静态代理
  2. 动态代理

三、静态代理

  静态代理在使用时,需要定义接口或者父类,被代理对象与代理对象一起实现相同的接口或者是继承相同父类。

1. 实现方法

先把项目结构放出来
在这里插入图片描述

1). 使用继承关系实现静态代理

  1. 创建Person
    在这里插入图片描述
  2. 创建SuperPerson
    在这里插入图片描述
  3. 测试
    在这里插入图片描述

2). 使用装饰者模式实现静态代理

  1. 创建SuperPerson2
    在这里插入图片描述
  2. 测试
    在这里插入图片描述

3). 静态代理实例(对数据持久层进行事务管理)

  1. 创建UserDao
    在这里插入图片描述
  2. 创建UserDaoImpl
    在这里插入图片描述
  3. 创建UserDaoProxy
    在这里插入图片描述
  4. 测试
    在这里插入图片描述

2. 静态代理总结

  1. 可以做到在不修改目标对象的功能前提下,对目标功能进行扩展
  2. 因为代理对象需要与目标对象实现一样的接口,所以会有很多代理类,类太多。同时,一旦接口增加方法,目标对象与代理对象都要维护。
  3. 解决静态代理种的缺点:使用动态代理方式。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值