啊立的Spring框架学习笔记(四)

离上次回顾了依赖注入的方式和注解也有一段时间了,那段时间看起了前端相关的js、jquery和ajax的一些内容,因为接下来需要做一个手机App,想尝试用Java来搭建它的后台,现在使用的是SpringBoot框架在搭建,已经实现了一点基本功能吧(登录注册和跳转主页)与前端也可以交互。接下来也要继续加油了。

不过Spring的知识也要继续回顾,接下来回顾一下Spring的AOP(面向切面编程),这篇就先来记录一下对于动态代理的学习。

一、代理模式是什么

  • 它是二十三种设计模式中的一种,也是Spring的AOP特性实现的基础。
  • 定义: 由于某些原因需要给某对象提供一个代理以控制对该对象的访问。这时,访问对象不适合或者不能直接引用目标对象,代理对象作为访问对象和目标对象之间的中介。

二、 代理模式的优点

  • 1、可以实现在不修改源码 的情况下,扩展新功能,也可以理解为是对方法的增强
  • 2、使得项目的扩展和维护比较方便

三、 代理模式的分类

  • 1、静态代理模式:
    proxy
    从以上代码可以比较清晰的看出静态代理模式中

  • (1)代理对象和被代理对象实现了相同的接口Theme;

  • (2)代理对象中创建了被代理对象RealTheme;

  • (3)main中创建代理对象调用方法时,不仅会调用被代理对象的方法,还会调用增强方法PreRequest和PostRequest;

这也侧面的暴露了一个问题,假如我要换个主题,那我就得再写一个接口和新的代理,也就是说静态代理模式存在着只适合某一种业务,不易扩展。

  • 2、动态代理模式:

  • (一)基于接口的动态代理

被代理对象至少需要实现一个接口
interface

  • (二)基于子类,也就是通过继承来实现

被代理对象要求必须能被继承, 通过第三方库chlib实现
class1
class2
动态代理分为基于接口与基于子类两种,前者要求被代理对象要至少实现一个接口,后者要求被代理对象不能是final声明的最终类。相对来说,动态代理会比静态代理更具可扩展性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值