Sping AOP概述
实现机制
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,方法运行前后都可以使用的Around。After分为两种:After Returning、After Throwing。
实现方式
以下是Spring支持的AOP实现方式:
- 使用ProxyFactory
使用纯Java代码来使用编程式的写法,最核心的一个类是ProxyFactory - 配置ProxyFactoryBean
使用Xml来配置一个ProxyFactoryBean - 使用AOP的命名空间
目前用的比较流行 - 使用AspectJ的注解
Sping AOP概述相关推荐
- Spring AOP概述及底层实现原理
Spring AOP概述及底层实现原理 aop概述 AOP全称为Aspect Oriented Programming的缩写,意为:面向切面编程.将程序中公用代码进行抽离,通过动态代理实现程序功能的统 ...
- AOP概述及实现原理
AOP 引言 Spring 为解耦而生,其中AOP(面向切面编程)是很浓重的一笔.AOP(Aspect-Oriented-Programming)指一种程序设计范型,该范型以一种称为切面(aspect ...
- spring AOP 概述(一) Advice
Advice通知 Advice(通知)定义在连接点做什么,为切面增强织入接口.在Spring AOP中,它主要描述Spring AOP 围绕方法调用而注入的切面行为.Advice是AOP联盟定义的一个 ...
- Spring Aop 组件概述
Spring Aop 概述 AOP(Aspect-Oriented Programming) 面向切面编程, 这种编程模型是在 OOP(Object-Oriented Programming) 的基础 ...
- Spring aop面向切面编程概述
aop概述 1.AOP为Aspect Oriented Programming的缩写,意为:面向切面编程.将程序中公用代码进行抽离,通过动态代理实现程序功能的统一维护的一种技术.使代码耦合性降低,提高 ...
- 【小家Spring】Spring AOP各个组件概述与总结【Pointcut、Advice、Advisor、Advised、TargetSource、AdvisorChainFactory...】
每篇一句 基础技术总是枯燥但有价值的.数学.算法.网络.存储等基础技术吃得越透,越容易服务上层的各种衍生技术或产品 相关阅读 [小家Spring]Spring AOP原理使用的基础类打点(AopInf ...
- SpringBoot—集成AOP详解(面向切面编程Aspect)
关注微信公众号:CodingTechWork,一起学习进步. AOP介绍 AOP概述 AOP是Aspect-Oriented Programming,即为面向(切面)方面编程.在维基百科中的解释: ...
- Spring框架系列之AOP思想
微信公众号:compassblog 欢迎关注.转发,互相学习,共同进步! 有任何问题,请后台留言联系! 1.AOP概述 (1).什么是 AOP AOP 为 Aspect Oriented Progra ...
- (转)Spring AOP的底层实现技术
AOP概述 软件的编程语言最终的目的就是用更自然更灵活的方式模拟世界,从原始机器语言到过程语言再到面向对象的语言,我们看到编程语言在一步步用更自然.更强大的方式描述软件.AOP是软件开发思想的一个飞跃 ...
- Spring的AOP思想和实现AOP思想的框架AspectJ
章节目标:详细解释什么是Spring AOP思想和对于该思想实现的AspectJ框架的实现用法. 一.AOP面向切面编程 1.AOP概述 AOP(Aspect Orient Programming)面 ...
最新文章
- 算法转AI平台工程师记录-0
- hibernate ——联合主键
- ios 静音模式_静音设计模式
- 查看PLC IP 端口_西门子828D数控系统X130接口通讯怪异现象(X130手动设置的 IP)...
- mysql撤销用户授权_mysql用户授权及撤销
- 秋式开源团队,欢迎您的加入!
- Redis3.2.5 集群搭建以及Spring-boot测试
- ELK的端口以及加入x-pack的密码问题
- 【Luogu2085】最小函数值(优先队列)
- python常用内置函数整理
- 微软小冰迎来了一个新姐妹:“欣小然”
- java multibox_月光软件站 - 编程文档 - Java - Struts 中 Multibox 的用法
- appium环境搭建android版,【appium】自动化测试appium教程(环境搭建上)
- 笔记-MFC更换鼠标图片
- [INSTALL_FAILED_ALREADY_EXISTS]
- 使用Keras的面部表情识别
- BDD ROBDD
- 20155210 2016-2017-2 《Java程序设计》第7周学习总结
- 【DBC专题】-7-在DBC中创建一个Signal Group信号组
- 什么是随机对照双盲实验