1.AOP术语:

通知(Advice)

切面的工作被称为通知。同时通知还解决了何时执行这个工作。

Spring切面可以应用5种类型的通知:
          前置通知(Before) : 在目标方法被调用之前调用通知功能;
          后置通知(After) : 在目标方法完成之后调用通知, 此时不会关心方法的输出是什么;
          返回通知(After-returning) : 在目标方法成功执行之后调用通知;
          异常通知(After-throwing) : 在目标方法抛出异常后调用通知;
          环绕通知(Around) : 通知包裹了被通知的方法, 在被通知的方法调用之前和调用之后执行自定义的行为;

切点(pointcut)

一个切面并不需要通知应用的所有连接点。 切点有助于缩小切面所通知的连接点的范围。

连接点(join point)

连接点是在应用执行过程中能够插入切面的一个点。

切面(Aspect)

切面是通知和切点的结合。 通知和切点共同定义了切面的全部内容——它是什么, 在何时和何处完成其功能。

织入(Weaving)

织入是把切面应用到目标对象并创建新的代理对象的过程。 切面在指定的连接点被织入到目标对象中。 在目标对象的生命周期里有多个点可以进行织入:
      编译期: 切面在目标类编译时被织入。 这种方式需要特殊的编译器。 AspectJ的织入编译器就是以这种方式织入切面的。
      类加载期: 切面在目标类加载到JVM时被织入。 这种方式需要特殊的类加载器(ClassLoader) , 它可以在目标类被引入应用之前增强该目标类的字节码。 AspectJ 5的加载时织入(load-timeweaving, LTW) 就支持以这种方式织入切面。
     运行期: 切面在应用运行的某个时刻被织入。 一般情况下, 在织入切面时, AOP容器会为目标对象动态地创建一个代理对象。Spring AOP就是以这种方式织入切面的。

2.Spring提供了4种类型的AOP支持:

基于代理的经典Spring AOP;
    纯POJO切面;
    @AspectJ注解驱动的切面;
    注入式AspectJ切面(适用于Spring各版本)

3.Spring AOP所支持的AspectJ切点指示器

Spring借助AspectJ的切点表达式语言来定义Spring切面

AspectJ指
示器
描 述
arg() 限制连接点匹配参数为指定类型的执行方法
@args() 限制连接点匹配参数由指定注解标注的执行方法
execution() 用于匹配是连接点的执行方法
this() 限制连接点匹配AOP代理的bean引用为指定类型的类
target 限制连接点匹配目标对象为指定类型的类
@target() 限制连接点匹配特定的执行对象, 这些对象对应的类要具有指定类
型的注解
within() 限制连接点匹配指定的类型
@within() 限制连接点匹配指定注解所标注的类型(当使用Spring AOP时, 方
法定义在由指定的注解所标注的类里)
@annotation 限定匹配带有指定注解的连接点

4.使用注解创建切面

使用注解来创建切面是AspectJ 5所引入的关键特性。AspectJ面向注解的模型可以非常简便地通过少量注解把任意类转变为切面。
                                                        Spring使用AspectJ注解来声明通知方法

注 解 通 知
@After 通知方法会在目标方法返回或抛出异常后调用
@AfterReturning 通知方法会在目标方法返回后调用
@AfterThrowing 通知方法会在目标方法抛出异常后调用
@Around 通知方法会将目标方法封装起来
@Before 通知方法会在目标方法调用之前执行

@Pointcut注解能够在一个@AspectJ切面内定义可重用的切点。

spring:《spring实战》读后感三相关推荐

  1. Spring MVC 实战:三种方式获取登录用户信息

    前言 Web 项目中,维持用户登录状态的常用方式有三种,分别是 Cookie.Session.Token,不管哪种方案,都需要获取到用户信息供业务层使用. 由于获取用户信息与具体业务无关,因此在普通的 ...

  2. spring boot实战(第六篇)加载application资源文件源码分析

    前言 在上一篇中了解了spring配置资源的加载过程,本篇在此基础上学习spring boot如何默认加载application.xml等文件信息的. ConfigFileApplicationLis ...

  3. Spring Cloud实战小贴士:Zuul统一异常处理(三)【Dalston版】

    本篇作为<Spring Cloud微服务实战>一书关于Spring Cloud Zuul网关在Dalston版本对异常处理的补充.没有看过本书的读书也不要紧,可以先阅读我之前的两篇博文:& ...

  4. Spring Cloud实战(三)-监控中心

    接着上一篇 Spring Cloud实战(二)-注册中心 现在开始搭建监控中心 一.监控中心monitor-server 1.添加spring-boot-admin版本控制到cloud-action的 ...

  5. Spring Boot实战:过滤器、拦截器与切片

    Spring Boot实战:过滤器.拦截器与切片 Q:使用过滤器.拦截器与切片实现每个请求耗时的统计,并比较三者的区别与联系 过滤器Filter 过滤器概念 Filter是J2E中来的,可以看做是Se ...

  6. Spring Security 实战干货:OAuth2登录获取Token的核心逻辑

    作者 | 码农小胖哥 来源 | https://mp.weixin.qq.com/s/zdTBdSVunqwVGx-spHjLjw 1. 前言 在上一篇Spring Security 实战干货:OAu ...

  7. Spring Security 实战干货:客户端OAuth2授权请求的入口在哪里

    1. 前言 在Spring Security 实战干货:OAuth2 第三方授权初体验一文中我先对 OAuth2.0 涉及的一些常用概念进行介绍,然后直接通过一个 DEMO 来让大家切身感受了 OAu ...

  8. Spring Security 实战干货: RBAC权限控制概念的理解

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 作者 | 码农小胖哥 来源 | 公众号「码农小胖哥」 1 ...

  9. Spring Security 实战干货:实现自定义退出登录

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 1. 前言 上一篇对 Spring Security 所 ...

  10. Spring Security 实战干货:玩转自定义登录

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 1. 前言 前面的关于 Spring Security  ...

最新文章

  1. 15年的最后一天终于暂时解决了软件中的“过年虫”问题
  2. 正則表達式,终极使用!3个工具,搞定一切
  3. java虚拟_Java虚拟机(JVM)工作原理
  4. LeetCode 98. 验证二叉搜索树 思考分析
  5. C++ STL一些注意事项
  6. 在Linux下使用Vim编写C++
  7. 基于modelsim的十个Verilog入门试验程序(2)(JK触发器+环形计数器)—程序+测试代码+波形+结果分析
  8. 如何理解 Spring AOP 以及使用 AspectJ?
  9. 计算机二级c语言考试真题及答案详解,计算机二级c语言试题及答案
  10. mysql 授权 失败_完美解决mysql客户端授权后连接失败的问题
  11. Assembly.Load动态加载程序集而不占用文件
  12. 线性代数及其应用(第三版)2.2节习题解答
  13. 128道软件测试面试题,面试及答案,视频讲解
  14. 可口可乐中国联袂青年志发布《中国青年「在乎力」报告》
  15. SIFT之极值点检测
  16. 补天漏洞平台为什么能吸引众多白帽和企业?
  17. 深度学习上采样下采样概念以及实现
  18. RatingBar的使用
  19. 物联网发展的三大编程语言
  20. 为什么你学过Java却忘光了——记第一次助教同学见面会,java开发面试笔试题

热门文章

  1. 练习一:数学计算 有四个数字,分别是1,2,3,4,请问可以组成多少个相互不重复的数字,各是多少...
  2. 中秋之晚开始 编程语言学习之路
  3. qt 提高图片加载速度
  4. 写给java开发的运维笔记
  5. nginx安装(正式)
  6. Windows服务ServicesDependedOn的奇怪问题?
  7. 汇编伪指令EVEN(数据对齐的伪指令,使得下一个变量的起始地址是偶数字节的)
  8. 关于Two pointers的个人理解
  9. 每天坚持一个CSS——社会人
  10. iOS 代理设计模式