© 版权声明:本文为博主原创文章,转载请注明出处

什么是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的基本概念的更多相关文章

  1. spring学习 十三 注解AOP

    spring 不会自动去寻找注解,必须告诉 spring 哪些包下的类中可能有注解,也就是要开启注解扫描,注解的包是spring-context.jar,所以在配置文件中还要引入context约束,也 ...

  2. Spring学习(十三)-----Spring 表达式语言(Spring EL)

    本篇讲述了Spring Expression Language —— 即Spring3中功能丰富强大的表达式语言,简称SpEL.SpEL是类似于OGNL和JSF EL的表达式语言,能够在运行时构建复杂 ...

  3. Spring学习笔记之aop动态代理(3)

    Spring学习笔记之aop动态代理(3) 1.0 静态代理模式的缺点: 1.在该系统中有多少的dao就的写多少的proxy,麻烦 2.如果目标接口有方法的改动,则proxy也需要改动. Person ...

  4. Spring学习(十一)-----Spring使用@Required注解依赖检查

    Spring学习(九)-----Spring依赖检查 bean 配置文件用于确定的特定类型(基本,集合或对象)的所有属性被设置.在大多数情况下,你只需要确保特定属性已经设置但不是所有属性.. 对于这种 ...

  5. Spring学习(六)-----Spring使用@Autowired注解自动装配

    Spring使用@Autowired注解自动装配 在上一篇 Spring学习(三)-----Spring自动装配Beans示例中,它会匹配当前Spring容器任何bean的属性自动装配.在大多数情况下 ...

  6. Spring学习笔记4——AOP

    AOP 即 Aspect Oriented Program 面向切面编程 首先,在面向切面编程的思想里面,把功能分为核心业务功能,和周边功能. 所谓的核心业务,比如登陆,增加数据,删除数据都叫核心业务 ...

  7. spring学习(三) ———— spring事务操作

    前面一篇博文讲解了什么是AOP.学会了写AOP的实现,但是并没有实际运用起来,这一篇博文就算是对AOP技术应用的进阶把,重点是事务的处理. --wh 一.jdbcTemplate 什么是JdbcTem ...

  8. spring 学习 一 spring 介绍

    Spring 是一个开源框架,是为了解决企业应用程序开发复杂性而创建的.框架的主要优势之一就是其分层架构,分层架构允许您选择使用哪一个组件,同时为 J2EE 应用程序开发提供集成的框架. Spring ...

  9. spring学习12 -Spring 框架模块以及面试常见问题注解等

    以下为spring常见面试问题: 1.Spring 框架中都用到了哪些设计模式? Spring框架中使用到了大量的设计模式,下面列举了比较有代表性的: 代理模式—在AOP和remoting中被用的比较 ...

随机推荐

  1. pat 甲级 1022. Digital Library (30)

    1022. Digital Library (30) 时间限制 1000 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue A Di ...

  2. web服务之http

    HTTP协议 HTTP协议,全称HyperText Transfer Protocol即超文本传输协议,是互联网中最常用的一种网络协议.HTTP协议是互联网上的通信协议方案之一.它有很多的应用, 但最 ...

  3. LOJ#2307. 「NOI2017」分身术

    $n \leq 100000$个点,$m \leq 100000$次询问,每次问删掉一些点后的凸包面积. 不会啦写个20暴力,其实是可以写到50的.当个计算几何板子练习. //#include< ...

  4. DataRelation 实现父子表 父子级 Repeater的嵌套使用

    原文发布时间为:2009-05-21 -- 来源于本人的百度文章 [由搬家工具导入] DataRelation 实现父子表         if (!IsPostBack)        {      ...

  5. [LeetCode] Longest Substring Without Repeating Characters最长无重复子串

    Given a string, find the length of the longest substring without repeating characters. For example, ...

  6. eclipse在linux環境下安裝注意事项

    文件如果安装在非home文件夹下必须为eclipse授权 sudo chmod -R 777 /usr/tools/eclipse

  7. Android新特性之CardView的简单使用

    Android新特性之CardView的简单使用 我们学习下Android5.0的新增加的控件CardView.首先我们了解一下CardView的基本使用,然后结合RecycleView使用CardV ...

  8. (22)python PhantomJS

    下载地址 https://bitbucket.org/ariya/phantomjs/downloads/ 安装 解压后把bin目录下的phantomjs.exe文件复制到C:\Python27\Sc ...

  9. MySQL Workbench关键字转成小写设置

  10. oracle查询、删除表中相同的数据

    delete FROM tablename a WHERE rowid > ( SELECT min(rowid) FROM tablename b WHERE b.id = a.id and ...