Spring学习十三----------Spring AOP的基本概念
© 版权声明:本文为博主原创文章,转载请注明出处
什么是AOP
-面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术
-主要的功能是:日志记录、性能统计、安全控制、事务处理、异常处理等
AOP实现方式
-预编译
-AspectJ
-运行期动态代理(JDK动态代理、CGLib动态代理)
-Spring AOP、Jboss AOP
AOP相关概念
-切面(Aspect) 一个关注点的模块化,这个关注点可能会横切多个对象
-连接点(Joinpoint) 程序执行过程中的某个特定的点
-通知(Advice) 在切面的某个特定的连接点上执行的动作
-切入点(Pointcut) 匹配连接点的断言,在AOP中通知和一个切入点表达式关联
-引入(Introduction) 在不修改类代码的前提下,为类添加新的方法和属性
-目标对象(Target Object) 被一个或者多个切面所通知的对象
-AOP代理(AOP Proxy) AOP框架创建的对象,用来实现切面契约(aspect contract)(包括通知方法执行等功能)
-织入(Weaving) 把切面连接到其他的应用程序类型或者对象上,并创建一个被通知的对象,分为:编译时织入、类加载时织入、执行时织入
Advice的类型
-前置通知(Before advice) 在某连接点(join point)之前执行的通知,但不能阻止连接点前的执行(除非它抛出一个异常)
-返回后通知(After returning advice) 在某连接点(join point)正常完成后执行的通知
-抛出异常后通知(After throwing advice) 在方法抛出异常退出时执行的通知
-后通知(After(finally) advice) 当某连接点退出的时候执行的通知(不论是正常返回还是异常退出)
-环绕通知(Around Advice) 包围一个连接点(join point)的通知
Spring中AOP的用途
-提供了声明式的企业服务,特别是EJB的替代服务的声明
-允许用户定制自己的方面,以完成OOP和AOP的互补使用
Spring的AOP实现
-纯Java实现,无需特殊的编译过程,不需要控制类加载器层次
-目前只支持方法执行连接点(通知Spring Bean的方法执行)
-不是为了提供最完整的AOP实现;而是侧重于提供一种AOP实现和Spring IoC容器之间的整合,用于帮助解决企业应用中的常见问题
-Spring AOP不会和AspectJ竞争,从而提供综合完整的AOP解决方案
Spring AOP的代理方式
-默认使用标准的JavaSE动态代理作为AOP代理,使得任何接口(接口集)都可以被代理
-如果一个业务对象并没有实现一个接口,也可以使用CGLIB代理
参考:http://www.imooc.com/video/4418
Spring学习十三----------Spring AOP的基本概念的更多相关文章
- spring学习 十三 注解AOP
spring 不会自动去寻找注解,必须告诉 spring 哪些包下的类中可能有注解,也就是要开启注解扫描,注解的包是spring-context.jar,所以在配置文件中还要引入context约束,也 ...
- Spring学习(十三)-----Spring 表达式语言(Spring EL)
本篇讲述了Spring Expression Language —— 即Spring3中功能丰富强大的表达式语言,简称SpEL.SpEL是类似于OGNL和JSF EL的表达式语言,能够在运行时构建复杂 ...
- Spring学习笔记之aop动态代理(3)
Spring学习笔记之aop动态代理(3) 1.0 静态代理模式的缺点: 1.在该系统中有多少的dao就的写多少的proxy,麻烦 2.如果目标接口有方法的改动,则proxy也需要改动. Person ...
- Spring学习(十一)-----Spring使用@Required注解依赖检查
Spring学习(九)-----Spring依赖检查 bean 配置文件用于确定的特定类型(基本,集合或对象)的所有属性被设置.在大多数情况下,你只需要确保特定属性已经设置但不是所有属性.. 对于这种 ...
- Spring学习(六)-----Spring使用@Autowired注解自动装配
Spring使用@Autowired注解自动装配 在上一篇 Spring学习(三)-----Spring自动装配Beans示例中,它会匹配当前Spring容器任何bean的属性自动装配.在大多数情况下 ...
- Spring学习笔记4——AOP
AOP 即 Aspect Oriented Program 面向切面编程 首先,在面向切面编程的思想里面,把功能分为核心业务功能,和周边功能. 所谓的核心业务,比如登陆,增加数据,删除数据都叫核心业务 ...
- spring学习(三) ———— spring事务操作
前面一篇博文讲解了什么是AOP.学会了写AOP的实现,但是并没有实际运用起来,这一篇博文就算是对AOP技术应用的进阶把,重点是事务的处理. --wh 一.jdbcTemplate 什么是JdbcTem ...
- spring 学习 一 spring 介绍
Spring 是一个开源框架,是为了解决企业应用程序开发复杂性而创建的.框架的主要优势之一就是其分层架构,分层架构允许您选择使用哪一个组件,同时为 J2EE 应用程序开发提供集成的框架. Spring ...
- spring学习12 -Spring 框架模块以及面试常见问题注解等
以下为spring常见面试问题: 1.Spring 框架中都用到了哪些设计模式? Spring框架中使用到了大量的设计模式,下面列举了比较有代表性的: 代理模式—在AOP和remoting中被用的比较 ...
随机推荐
- StringBuilder与StringBuffer
转:http://www.cnblogs.com/pepcod/archive/2013/02/16/2913557.html JAVA中用于处理字符串常用的有三个类: java.lang.Strin ...
- Serializable在C#中的作用及其优点
原文发布时间为:2009-10-27 -- 来源于本人的百度文章 [由搬家工具导入] Serializalbe - Enable the object can be Serialized into a ...
- hdu 3072 有向图缩点成最小树形图计算最小权
题意,从0点出发,遍历所有点,遍历边时候要付出代价,在一个SCC中的边不要付费.求最小费用. 有向图缩点(无需建立新图,,n<=50000,建则超时),遍历边,若不在一个SCC中,用一个数组更新 ...
- validate插件使用
validate插件使用 官网:http://jqueryvalidation.org/ 项目实操 引入文件 add.html调用(注意顺序问题) 为form表单定义一个ID,以方便获取该元素 添加验 ...
- svn报“Previous operation has not finished; run 'cleanup' if it was interrupted”的错误
-.叙述 今天需要更新接口文檔,所以就update了一下,結果報了如下錯誤: Error : Previous operation has not finished; run 'cleanu ...
- 我希望早几年知道的5个Unix命令
使用*nix系统已经有一段时间了.但还是有一些命令是被我一直忽略的,真希望我能早几年发现这些命令. 1. man ascii 这个命令会打印出八进制.十六进制和十进制的ASCII码表.难以置信我是一个 ...
- OFV.msi是什么 为什么更新时无法安装
在网络上搜索了下 这个是Microsoft Office 文件验证加载项,微软提供了一个单独的文件:http://www.microsoft.com/downloads/zh-cn/confirmat ...
- 漫谈程序员系列:3D打印能打印出程序员吗
首先声明,本文是一本正经的胡扯,绝不是随随便便的胡扯,请您不要随便攻击我胡说八道.我要反复星爷在<喜剧之王>里的台词:事实上.我是一本正经的喷子. 3D打印的定义 关于3D打印,以下是来自 ...
- MFC 文档视图关系
参考:http://www.360doc.com/content/11/1102/09/3054335_160991088.shtml 写的很详细可以看看 IDC_:控件的ID命名前缀(Control ...
- linux 下route命令
参考:http://blog.sina.com.cn/s/blog_67146a750100zoyi.html 为了让设备能访问另一个子网,需要在设备里增加路由到子网络,下面是一些资料.基本操作如下: ...