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中被用的比较 ...
随机推荐
- vue基础教程
1.执行npm install 2.安装stylus,(npm install之后node_module已经有了stylus,但还是要再安装一次) npm install --save-dev sty ...
- 《插件》一个比较好用的 chrome浏览器的json格式化插件
插件名: JSON-Handle 下载地址: http://jsonhandle.sinaapp.com/ 插件下载后,在浏览器输入:chrome://extensions/ 将下 ...
- nodeJS学习(6)--- Sublime Text3 配置Node.js 开发环境
参考:http://www.bubuko.com/infodetail-798008.html http://www.cnblogs.com/bluesky4485/p/3928364.html 1. ...
- Javascript&Html-弹出窗口的屏蔽程序
大多数的浏览器都内置了弹出窗口的屏蔽程序,即使没有内置此类屏蔽程序的浏览器,用户也可以安装Yahoo tool等带有内置屏蔽程序的应用工具. 结果就是用户可以将绝大多数弹出窗口屏蔽掉. 于是,再弹出窗 ...
- 用Razor来生成模板 using razor for template
原文发布时间为:2011-09-15 -- 来源于本人的百度文章 [由搬家工具导入] http://razorengine.codeplex.com/
- html执行.NET函数 html操作数据库 html与ashx结合
原文发布时间为:2009-09-30 -- 来源于本人的百度文章 [由搬家工具导入] html页面执行.NET函数 html与ashx的结合 1、添加一般应用程序Handler.ashx <%@ ...
- 【shell入门】Shell用法
参考:http://www.cnblogs.com/Lynn-Zhang/p/5758287.html 1.sh/bash/csh/Tcsh/ksh/pdksh等shell的区别 sh(全称 Bour ...
- window postgresql 10.4安装
window installer下载地址:https://www.enterprisedb.com/downloads/postgres-postgresql-downloads 其他版本官网下载地址 ...
- 洛谷 P1328 生活大爆炸版石头剪刀布【模拟/环/周期】
题目描述 石头剪刀布是常见的猜拳游戏:石头胜剪刀,剪刀胜布,布胜石头.如果两个人出拳一样,则不分胜负.在<生活大爆炸>第二季第8 集中出现了一种石头剪刀布的升级版游戏. 升级版游戏在传统的 ...
- mysql5.6新补充
输入:cd C:\Program Files(x86)\MySQL\MySQL Server 5.6\bin 回车 然后输入:mysqld -install再回车 然后出现 安装成功后,再输入net ...