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

什么是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. Func<T1, T2, TResult> Delegate 系统Func委托类型

    原文发布时间为:2011-03-25 -- 来源于本人的百度文章 [由搬家工具导入] http://msdn.microsoft.com/en-us/library/bb534647%28v=VS.1 ...

  2. 【转】Resharper上手指南

    原文发布时间为:2011-02-16 -- 来源于本人的百度文章 [由搬家工具导入] 我是visual studio的忠实用户,从visual studio 6一直用到了visual studio 2 ...

  3. quartz的配置

    Quartz.Net中的概念:计划者(IScheduler).工作(IJob).触发器(Trigger).给计划者一个工作,让他在Trigger(什么条件下做这件事)触发的条件下执行这个工作 将要定时 ...

  4. Linux/Unix编程中的线程安全问题【转】

    转自:http://blog.csdn.net/zhengzhoudaxue2/article/details/6432984 在目前的计算机科学中,线程是操作系统调度的最小单元,进程是资源分配的最小 ...

  5. netbean下搭建mariadb数据库

    本人的操作系统Manjaro 最新版,mariadb版本为10.1.1,使用netbeasn开发java WEB,搭建过程如下: 1.安装数据库 pacman -S mariadb 2.启动数据库服务 ...

  6. iptables介绍iptables和netfilter

    随着互联网技术的方兴未艾,各种网络应用层出不穷,网络攻击.黑客入侵也成了网民畅游互联网的心头大患,互联网安全也愈加受到了人们的重视.网络防火墙,作为一种简单高效的互联网防御手段,逐渐成为了网民畅游网络 ...

  7. hdu 1005(找循环节)

    Number Sequence Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)T ...

  8. ios textfield如何设置,只能输入1.0-9.9内的数字,并实现时时监测效果

    //byzqk- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range repla ...

  9. EOJ 3.30 A. 打工时不可能打工的【贪心】

    [链接]:https://acm.ecnu.edu.cn/contest/59/problem/A/ A. 打工时不可能打工的 Time limit per test: 2.0 seconds Mem ...

  10. c++语言虚函数实现多态的原理(更新版)

    自上一个帖子之间跳过了一篇总结性的帖子,之后再发,今天主要研究了c++语言当中虚函数对多态的实现,感叹于c++设计者的精妙绝伦 c++中虚函数表的作用主要是实现了多态的机制.首先先解释一下多态的概念, ...