spring aop源码分析
什么是AOP
面试中经常被问到什么是AOP,其实AOP是一种技术实现,或者说是一种实现标准,实现AOP的技术有多种,但是通常所说的AOP,大家会不自觉的想到spring aop,因为spring aop被问了很多次。本文想从源码的执行流程上来简单说说AOP的实现原理。
AOP底层技术实现
aop的底层技术其实就是大家熟知的代理,spring aop中的代理主要有两种,cglib代理和JDK动态代理,这两种代理的使用场景有所不同,如果被代理的类实现了接口,就使用JDK动态代理,否则就是cglib代理,当然这是默认情况下,否则可以通过修改相关的参数强制使用cglib代理
简单代码实现
下面先通过一个简单的案例来体验一下aop的实现,代码比较简单,下面直接贴出来:
1、MainConfig ,全局扫描类
@ComponentScan("com.congge.stu2")
@EnableAspectJAutoProxy
public class MainConfig {}
2、StudentService,被spring扫描的类
@Component
public class StudentService{public void queryStudent() {System.out.println("执行查询");}
}
3、AOP配置类
spring aop源码分析相关推荐
- Spring AOP 源码分析 - 拦截器链的执行过程
1.简介 本篇文章是 AOP 源码分析系列文章的最后一篇文章,在前面的两篇文章中,我分别介绍了 Spring AOP 是如何为目标 bean 筛选合适的通知器,以及如何创建代理对象的过程.现在我们的得 ...
- Spring AOP 源码分析 - 创建代理对象
1.简介 在上一篇文章中,我分析了 Spring 是如何为目标 bean 筛选合适的通知器的.现在通知器选好了,接下来就要通过代理的方式将通知器(Advisor)所持有的通知(Advice)织入到 b ...
- Spring AOP 源码分析 - 筛选合适的通知器
1.简介 从本篇文章开始,我将会对 Spring AOP 部分的源码进行分析.本文是 Spring AOP 源码分析系列文章的第二篇,本文主要分析 Spring AOP 是如何为目标 bean 筛选出 ...
- spring AOP源码分析(一)
spring AOP源码分析(一) 对于springAOP的源码分析,我打算分三部分来讲解:1.配置文件的解析,解析为BeanDefination和其他信息然后注册到BeanFactory中:2.为目 ...
- 一步一步手绘Spring AOP运行时序图(Spring AOP 源码分析)
相关内容: 架构师系列内容:架构师学习笔记(持续更新) 一步一步手绘Spring IOC运行时序图一(Spring 核心容器 IOC初始化过程) 一步一步手绘Spring IOC运行时序图二(基于XM ...
- 【Spring】Spring AOP源码分析-导读(一)
文章目录 1.简介 2.AOP 原理 3.AOP 术语及相应的实现 3.1 连接点 - Joinpoint 3.2 切点 - Pointcut 3.3 通知 - Advice 3.4 切面 - Asp ...
- Spring AOP源码分析(八)SpringAOP要注意的地方
2019独角兽企业重金招聘Python工程师标准>>> SpringAOP要注意的地方有很多,下面就举一个,之后想到了再列出来: (1)SpringAOP对于最外层的函数只拦截pub ...
- Spring AOP源码分析(七)ProxyFactoryBean介绍
2019独角兽企业重金招聘Python工程师标准>>> 这篇文章里面就要说说Spring自己的AOP,搞清楚哪种方式是Spring自己实现的AOP,哪种方式是Spring引入aspe ...
- Spring AOP源码分析(四)Spring AOP的JDK动态代理
2019独角兽企业重金招聘Python工程师标准>>> 本篇文章将会介绍上一个例子中的源码执行情况,从中熟悉整个SpringAOP的一些概念和接口设计. 首先整个SpringAOP的 ...
- Spring AOP源码分析二
上一篇中,我们已经找到了AOP的源码入口,我们今天继续分析下面的代码,不过在此之前我们需要看下Spring中如何使用切面的,以便于我们理解我们的源码.代码如下: package com.younger ...
最新文章
- 通信测试:5G 时代的“卖水人”
- .NET程序员的C情结(二)
- dedecms 会员网站UID注册名转MID
- sql之left join、right join、inner join的区别,连接自己时的查询结果测试
- SQL基础---SQL ORDER BY 子句
- Intellij IDEA -01 如何配置项目!
- Eclipse 导入项目乱码问题
- 数据科学包5- pandas基础之基础运算
- Unity3D学习笔记(二十七):MVC框架下的背包系统(2)
- 蚂蚁课堂-第四期-基于SpringCloud构建微服务电商项目 (无密) 解压密码是多少
- Python使用quote、unquote、urlencode、urldecode对url编码解码
- 雷达波位编排matlab仿真
- U-Boot中ubi和ubifs命令的使用
- idea--Preferences
- 文氏桥振荡电路多类分析 LM386 DZ006套件
- 22南工计算机学院新生培训最终章---ACM竞赛机制
- 数据结构和算法 | 第一部分第二课:小鸭子们去旅行
- java实现png有损压缩
- ​几张图看懂区块链到底是什么?
- linux查看u盘的分区,linux磁盘管理——识别和使用u盘
热门文章
- Disabling contextual LOB creation as createClob()
- 工厂模式之消除switch/case语句
- 统计图学习-类型介绍
- 解读|数据分析的发展和演变经过哪几个阶段
- 黄聪:Wordpress程序Mysql查询导致CPU100%,页面错误增量飙高解决方案
- Web开发与设计之Google兵器谱-Web开发与设计利器
- Vista初级使用技巧及故障总结
- 接到骗子短信后........
- Elasticsearch的倒排索引是什么?
- 基本操作:Go创建GraphQL API