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中被用的比较 ...
随机推荐
- vmware虚拟机无法ping通主机,也无法联网
- Docker Daemon 连接方式详解
前言 在 Docker 常用详解指令 一文中粗粗提了一下, Docker 是分为客户端和服务端两部分的, 本文将介绍客户端是如何连接服务端的. 连接方式 1. UNIX域套接字 默认就是这种方式, 会 ...
- 【NOIP2009】最优贸易
描述 C 国有 n 个大城市和 m 条道路,每条道路连接这 n 个城市中的某两个城市.任意两个城市之间最多只有一条道路直接相连.这 m 条道路中有一部分为单向通行的道路,一部分为双向通行的道路,双向通 ...
- java基础(1-50)-------->超级简单,不信你不会!!!
1:java中的保留字:const&goto; 2:&和&&都可以做逻辑运算符,即运算符两边的表达式都为true,结果才为true,一方为false,则结果为false ...
- 移动开发平台 apicloud、wex5
http://www.apicloud.com/deepengine http://www.wex5.com
- [转]谈谈Java中的语法糖
*该博客转自 http://blog.csdn.net/danchu/article/details/54986442 语法糖(Syntactic Sugar),也称糖衣语法,指在计算机语言中添加的某 ...
- Python Challenge 第十四关
14关页面上是两张图,一张是一个卷面包,一张类似条形码的东西.没任何提示,就看源代码,果然,有一行注释: <!-- remember: 100*100 = (100+99+99+98) + (. ...
- 微信小程序 图片路径自动加上文件目录导致渲染报错问题
最近 在做小程序时候,发现一些商品图片在渲染时一直报错,也不显示,但是控制台打印出来 的路径却有没有问题 报错提示出错的路径会在前面自动加上“page/**”,思索了之后想到了微信只能解释https的 ...
- CMake的应用(在vision studio2008中去掉 ALL_BUILD 和 ZERO_CHECK)
from http://blog.csdn.net/jtop0/article/details/6167432 一般由CMake是 跨平台软件开发和维护过程的 工程构建工具.“在每个系统构建你的工程 ...
- SVN的Status字段含义
执行SVN up和svn merge等命令出现在首位置的各字母含义如下: “ ” 无修改 “A” 新增 “C” 冲突 “D” 删除 “G” 合并 “I” 忽略 “M” 改变 “R” 替换 “X” 未纳 ...