| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> Java知识库 -> Spring5学习笔记(三)代理模式和AOP -> 正文阅读 |
|
[Java知识库]Spring5学习笔记(三)代理模式和AOP |
上一篇:Spring5学习笔记(二)三种装配方法:DI依赖注入;自动装配;在Java中显式装配 一、SpringAOP的底层原理:代理模式1. 静态代理? (1)不采用静态代理? 有一个对象:You you = new You(); 对象实现了一个接口的方法:HappyMarry(); 正常情况下执行方法:you.HappyMarry(); 如果想要功能更完善:修改HappyMarry()的代码,再执行 (2)采用静态代理? 为什么用静态代理:出于一些原因,HappyMarry()的代码不想修改,但是又想增加功能。 代码过程:
? 测试 为什么不想修改You类中的HappyMarry(): 因为HappyMarry()可能是核心方法,而我们想添加的只是一些相关性小的功能,如果写在一起程序不清楚 或者,假如有一个公共代码块,在很多地方都被调用了,如果这个公共代码块被修改了,比如传的参数类型改变。那么必须在每一个用到的地方修改。 所以,需要一个办法,可以在不改变原有代码的情况下增加功能。这个办法就是代理模式。 (3)代理模式的优缺点? 2. 动态代理? 最主要的区别是,不用为每个需要代理类的真实类量身定做方法。而是写一个代理类,这个代理类可以让所有实现了相同接口的真实对象都使用它。复用性更强。 二、面向切面编程(AOP)写一个切面类,在其中写重复性代码,然后切入到想切的类中。依靠动态代理实现。 1. 写一个切面类的步骤? 2. 为原有代码添加日志功能的小例子? (1)原有代码?
? ?? (2)方式一:利用Spring接口定义切面类 定义两个切面类如下: (2)方式二:自定义切面类? 切面类 (3)方式三:使用注解实现? |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/17 20:28:00- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |