关闭

Spring源码学习笔记(二)-AOP基础简介

220人阅读 评论(1) 收藏 举报
分类:
  1. 概论
    AOP(Aspect-Oriented Programming)面向切面编程。
    OOP(Object-Oriented Programmin) 面向对象编程。
    以AOP设计初衷来看,就是将系统分为 方面(Aspect)和关注点(Concern),这样让我们更多的精力放在业务逻辑核心点,而一些修饰的东西交给AOP实现。
  2. 实现原理
    在编译期修改源代码,运行期字节码加载前修改字节码或者字节码加载后动态创建代理类的字节码,这是AOP的实现方法。AOP具体实现分三步首先是生成代理,然后拦截器作用最后是编织具体的实现。(需要了解一下JDK反射机制,代理模式,静态代理,动态代理,CGLIB),以下是AOP体系图
    这里写图片描述
    共分为三个层次:1.AOP的配置,以及对配置的解析,检查;2.主要包括配置和编织逻辑,主要是高级API封装;3.编织实现具体模块主要包括反射、元数据处理、程序处理、类加载、拦截器
  3. 使用
    AOP在权限、日志、缓存、错误处理、懒加载、调试、跟踪优化和校准、性能优化、持久化、资源池、同步等方面都有用处。
    AOP相关术语如图这里写图片描述
    目标对象(Target):包含连接点的对象,被用来增强或者代理的对象。
    代理(Proxy):AOP框架创建的对象。
    连接点(JoinPoint):程序执行中明确的点,如方法的调用异常的抛出。
    切点(PointCut):AOP框架引发的地方。
    增强(Advice):在特定的连接点执行的动作,比如Before throws
    切面(Advisor):一个关注点的模块化,一般使用Advisor或者拦截器实现。
    织入(Weaving):组装具体的实现,
    引入(Introduction):添加方法或者字段到增强化类。
    接口(IsModified):用于简化缓存。
    Spring aop 具体使用:
    增强(Advice)描述何时调用,分为 Before,After,Around,Throws,Introduction

切点 (PointCut)描述何处调用
这里写图片描述
AOP有两种配置方式 XML配置方式 和自动注解配置方式

AOP配置元素 描述
<aop:advisor> 定义AOP通知器
<aop:after> 定义AOP后置通知(不管该方法是否执行成功)
<aop:after-returning> 在方法成功执行后调用通知
<aop:after-throwing> 在方法抛出异常后调用通知
<aop:around> 定义AOP环绕通知
<aop:aspect> 定义切面
<aop:aspect-autoproxy> 定义@AspectJ注解驱动的切面
<aop:before> 定义AOP前置通知
<aop:config> 顶层的AOP配置元素
<aop:declare-parent> 为被通知的对象引入额外的接口,并透明的实现
<aop:pointcut> 定义切点

自动注解

 <aop:aspectj-autoproxy />

(小结:对于AOP在项目中目前我使用的还是很少,所以有些使用场景理解还不够深刻,后面会给出一些场景具体的使用简介,学习之路漫漫,只能慢慢来。)

1
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

Spring AOP介绍及源码分析

软件开发经历了从汇编语言到高级语言和从过程化编程到面向对象编程;前者是为了提高开发效率,而后者则使用了归纳法,把具有共性的东西进行归类并使之模块化,达到便于维护和扩展的目的;如果说面向对象编程可以对业务需求进行很好的分解使之模块化;那么面向切面编程AOP(Aspect-Oriented Progra...
  • long405581649
  • long405581649
  • 2015-12-07 17:23
  • 1916

Spring AOP 简介以及简单用法

Spring AOP 简介以及简单用法如果你去面试java开发, 那么Spring的AOP和DI几乎是必问的问题。那么AOP是什么呢?一. AOP所谓Aop就是 Aspect-OrientedProgramming, 中文就是面向切面编程。我们之前听说面向过程编程, 以及面向对象编程, 而这个面向切...
  • nvd11
  • nvd11
  • 2016-07-06 00:39
  • 2398

(八)Spring核心框架 - AOP的原理及源码解析

一、AOP的体系结构 如下图所示:(引自AOP联盟) 层次3语言和开发环境:基础是指待增加对象或者目标对象;切面通常包括对于基础的增加应用;配置是指AOP体系中提供的配置环境或者编织配置,通过该配置AOP将基础和切面结合起来,从而完成切面对目标对象的编织实现。 层次2面向方面系统:配置模型,逻辑...
  • leicool_518
  • leicool_518
  • 2015-02-09 16:31
  • 2896

Spring AOP源码解读1 - 程序入口

前言 最近看了《从零开始写JavaWeb框架》,想比较一下Spring AOP的实现方式和书的上实现方式有什么不同,所以先把Spring AOP的源码读一下,再进行比较。 Spring的源码实在是复杂,在读的过程中参考了很多书和网上的文章,本文算是这些文章的总结,再加上一些我自己对另个细...
  • hotdust
  • hotdust
  • 2016-12-11 17:34
  • 897

Spring IOC和Spring AOP的实现原理(源码主线流程)

写在前面       正本文参考了《spring技术内幕》和spring 4.0.5源码。本文只描述原理流程的主线部分,其他比如验证,缓存什么可以具体参考源码理解。 Spring IOC 一、容器初始化       容器的初...
  • u013430196
  • u013430196
  • 2015-09-08 14:33
  • 2135

spring的IOC与AOP读源码小记

读spring中IOC、AOP事务的一些笔记
  • sgls652709
  • sgls652709
  • 2015-10-29 02:52
  • 1444

spring源码剖析(六)AOP实现原理剖析

Spring的AOP实现原理,酝酿了一些日子,写博客之前信心不是很足,所以重新阅读了一边AOP的实现核心代码,而且又从网上找了一些Spring Aop剖析的例子,但是发现挂羊头买狗肉的太多,标题高大上,内容却大部分都是比较浅显的一些介绍,可能也是由于比较少人阅读这部分的核心代码逻辑把,然后写这部分介...
  • fighterandknight
  • fighterandknight
  • 2016-04-23 17:22
  • 18670

Spring中IOC和AOP的介绍

前言:控制反转(Inversion of Control,英文缩写为IoC); 面向切面编程(Aspect Oriented Programming,英文缩写为AOP)我们是在使用spring框架的过程中,很大一部分是为了使用IoC(依赖注入),和AOP(面向切面编程),这两个是Spring的灵魂...
  • u013412772
  • u013412772
  • 2016-11-28 22:31
  • 1106

做一个合格的程序猿之浅析Spring AOP源码(十八) Spring AOP开发大作战源码解析

其实上一篇文章价值很小,也有重复造轮子的嫌疑,网上AOP的实例很多,不胜枚举,其实我要说的并不是这个,我想要做的就是上一节中spring的配置文件: 我们这边并没有用到我们上几节分析的哪几个AOP的主要实现类:ProxyFactoryBean.java , ProxyFactory.java ,A...
  • linuu
  • linuu
  • 2016-03-26 13:46
  • 1153

Spring Boot基础搭建(二)

接到上一篇:Spring Boot的基础搭建 重写数据源: druid的基本配置: 这里我们要实现使用druid数据源和配置druid的监控功能。 在pom.xml中dependencies 下添加: dependency>  groupId>com.alib...
  • qq_36224522
  • qq_36224522
  • 2017-03-29 09:22
  • 1067
    个人资料
    • 访问:3411次
    • 积分:114
    • 等级:
    • 排名:千里之外
    • 原创:8篇
    • 转载:0篇
    • 译文:0篇
    • 评论:1条
    文章分类
    文章存档