实现机制

Spring实现AOP是动态代理的方式。在Spring运行的时候,会针对目标Bean动态的产生一个代理的Bean,而调用者真正来使用的时候并不是直接访问目标Bean,而是使用的代理Bean

注意点

  • 代理Bean使用ProxyFactory产生
    这是使用编程或者Xml配置时,重点要使用的一个类,它是实现SpringAOP的关键的类。从名字也可以看出来它是一个代理工厂类。
  • 内部根据情况使用不同的代理实现
  • 代理Bean注入到调用者中供使用
    这是Spring的一贯风格

两种代理实现

代理在Java里面至少有两种,一种是JDK的代理,一种是开源包实现的代理

看上图,JDK的代理要求被代理的目标实现接口,CGLIB的代理不需要目标Bean实现任何的接口。因此,如果目标Bean实现了接口,上面两种方式都是可行的;如果目标Bean并没有实现任何接口,那只能考虑使用CGLIB。
如果从性能上考虑的话,JDK一般比CGLIB性能高一些。

连接点的类型

连接点用于表明通知用在哪个地方,Spring里面目前只支持一种连接点类型——方法调用。也就是说我们写的通知只有在方法调用这样的场景上可以用上,其他场景应用不上。
不过,在一些特定的场景下,连接点并不是方法调用的话,也可以集成功能更加强大的AspectJ,它提供了更多类型的连接点的支持。

通知类型


看上图,列出了通知的各种类型,在调用方法之前有Before,调用方法之后有After,方法运行前后都可以使用的AroundAfter分为两种:After ReturningAfter Throwing

实现方式

以下是Spring支持的AOP实现方式:

  • 使用ProxyFactory
    使用纯Java代码来使用编程式的写法,最核心的一个类是ProxyFactory
  • 配置ProxyFactoryBean
    使用Xml来配置一个ProxyFactoryBean
  • 使用AOP的命名空间
    目前用的比较流行
  • 使用AspectJ的注解

Sping AOP概述相关推荐

  1. Spring AOP概述及底层实现原理

    Spring AOP概述及底层实现原理 aop概述 AOP全称为Aspect Oriented Programming的缩写,意为:面向切面编程.将程序中公用代码进行抽离,通过动态代理实现程序功能的统 ...

  2. AOP概述及实现原理

    AOP 引言 Spring 为解耦而生,其中AOP(面向切面编程)是很浓重的一笔.AOP(Aspect-Oriented-Programming)指一种程序设计范型,该范型以一种称为切面(aspect ...

  3. spring AOP 概述(一) Advice

    Advice通知 Advice(通知)定义在连接点做什么,为切面增强织入接口.在Spring AOP中,它主要描述Spring AOP 围绕方法调用而注入的切面行为.Advice是AOP联盟定义的一个 ...

  4. Spring Aop 组件概述

    Spring Aop 概述 AOP(Aspect-Oriented Programming) 面向切面编程, 这种编程模型是在 OOP(Object-Oriented Programming) 的基础 ...

  5. Spring aop面向切面编程概述

    aop概述 1.AOP为Aspect Oriented Programming的缩写,意为:面向切面编程.将程序中公用代码进行抽离,通过动态代理实现程序功能的统一维护的一种技术.使代码耦合性降低,提高 ...

  6. 【小家Spring】Spring AOP各个组件概述与总结【Pointcut、Advice、Advisor、Advised、TargetSource、AdvisorChainFactory...】

    每篇一句 基础技术总是枯燥但有价值的.数学.算法.网络.存储等基础技术吃得越透,越容易服务上层的各种衍生技术或产品 相关阅读 [小家Spring]Spring AOP原理使用的基础类打点(AopInf ...

  7. SpringBoot—集成AOP详解(面向切面编程Aspect)

    关注微信公众号:CodingTechWork,一起学习进步. AOP介绍 AOP概述   AOP是Aspect-Oriented Programming,即为面向(切面)方面编程.在维基百科中的解释: ...

  8. Spring框架系列之AOP思想

    微信公众号:compassblog 欢迎关注.转发,互相学习,共同进步! 有任何问题,请后台留言联系! 1.AOP概述 (1).什么是 AOP AOP 为 Aspect Oriented Progra ...

  9. (转)Spring AOP的底层实现技术

    AOP概述 软件的编程语言最终的目的就是用更自然更灵活的方式模拟世界,从原始机器语言到过程语言再到面向对象的语言,我们看到编程语言在一步步用更自然.更强大的方式描述软件.AOP是软件开发思想的一个飞跃 ...

  10. Spring的AOP思想和实现AOP思想的框架AspectJ

    章节目标:详细解释什么是Spring AOP思想和对于该思想实现的AspectJ框架的实现用法. 一.AOP面向切面编程 1.AOP概述 AOP(Aspect Orient Programming)面 ...

最新文章

  1. 算法转AI平台工程师记录-0
  2. hibernate ——联合主键
  3. ios 静音模式_静音设计模式
  4. 查看PLC IP 端口_西门子828D数控系统X130接口通讯怪异现象(X130手动设置的 IP)...
  5. mysql撤销用户授权_mysql用户授权及撤销
  6. 秋式开源团队,欢迎您的加入!
  7. Redis3.2.5 集群搭建以及Spring-boot测试
  8. ELK的端口以及加入x-pack的密码问题
  9. 【Luogu2085】最小函数值(优先队列)
  10. python常用内置函数整理
  11. 微软小冰迎来了一个新姐妹:“欣小然”
  12. java multibox_月光软件站 - 编程文档 - Java - Struts 中 Multibox 的用法
  13. appium环境搭建android版,【appium】自动化测试appium教程(环境搭建上)
  14. 笔记-MFC更换鼠标图片
  15. [INSTALL_FAILED_ALREADY_EXISTS]
  16. 使用Keras的面部表情识别
  17. BDD ROBDD
  18. 20155210 2016-2017-2 《Java程序设计》第7周学习总结
  19. 【DBC专题】-7-在DBC中创建一个Signal Group信号组
  20. 什么是随机对照双盲实验

热门文章

  1. 枚举根节点、安全点、安全区域、OopMap
  2. java图片像素90翻转_java后台解决上传图片翻转90的问题,有demo,经过测试可用...
  3. 【feign源码】流程分析
  4. java项目 服务器部署Word转成PDF乱码
  5. RocketMQ(三)RocketMQ入门样例
  6. SpringBoot整合Sharding-JDBC实现水平分表
  7. Spring源码阅读 —— 一文看懂AOP的流程
  8. shell基础入门1.1shell特性
  9. 马尾物联网企业主导或参与制定修订各级标准达60项
  10. MySQL 启动服务和登陆参数