spring:《spring实战》读后感三
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实战》读后感三相关推荐
- Spring MVC 实战:三种方式获取登录用户信息
前言 Web 项目中,维持用户登录状态的常用方式有三种,分别是 Cookie.Session.Token,不管哪种方案,都需要获取到用户信息供业务层使用. 由于获取用户信息与具体业务无关,因此在普通的 ...
- spring boot实战(第六篇)加载application资源文件源码分析
前言 在上一篇中了解了spring配置资源的加载过程,本篇在此基础上学习spring boot如何默认加载application.xml等文件信息的. ConfigFileApplicationLis ...
- Spring Cloud实战小贴士:Zuul统一异常处理(三)【Dalston版】
本篇作为<Spring Cloud微服务实战>一书关于Spring Cloud Zuul网关在Dalston版本对异常处理的补充.没有看过本书的读书也不要紧,可以先阅读我之前的两篇博文:& ...
- Spring Cloud实战(三)-监控中心
接着上一篇 Spring Cloud实战(二)-注册中心 现在开始搭建监控中心 一.监控中心monitor-server 1.添加spring-boot-admin版本控制到cloud-action的 ...
- Spring Boot实战:过滤器、拦截器与切片
Spring Boot实战:过滤器.拦截器与切片 Q:使用过滤器.拦截器与切片实现每个请求耗时的统计,并比较三者的区别与联系 过滤器Filter 过滤器概念 Filter是J2E中来的,可以看做是Se ...
- Spring Security 实战干货:OAuth2登录获取Token的核心逻辑
作者 | 码农小胖哥 来源 | https://mp.weixin.qq.com/s/zdTBdSVunqwVGx-spHjLjw 1. 前言 在上一篇Spring Security 实战干货:OAu ...
- Spring Security 实战干货:客户端OAuth2授权请求的入口在哪里
1. 前言 在Spring Security 实战干货:OAuth2 第三方授权初体验一文中我先对 OAuth2.0 涉及的一些常用概念进行介绍,然后直接通过一个 DEMO 来让大家切身感受了 OAu ...
- Spring Security 实战干货: RBAC权限控制概念的理解
点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 作者 | 码农小胖哥 来源 | 公众号「码农小胖哥」 1 ...
- Spring Security 实战干货:实现自定义退出登录
点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 1. 前言 上一篇对 Spring Security 所 ...
- Spring Security 实战干货:玩转自定义登录
点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 1. 前言 前面的关于 Spring Security ...
最新文章
- 15年的最后一天终于暂时解决了软件中的“过年虫”问题
- 正則表達式,终极使用!3个工具,搞定一切
- java虚拟_Java虚拟机(JVM)工作原理
- LeetCode 98. 验证二叉搜索树 思考分析
- C++ STL一些注意事项
- 在Linux下使用Vim编写C++
- 基于modelsim的十个Verilog入门试验程序(2)(JK触发器+环形计数器)—程序+测试代码+波形+结果分析
- 如何理解 Spring AOP 以及使用 AspectJ?
- 计算机二级c语言考试真题及答案详解,计算机二级c语言试题及答案
- mysql 授权 失败_完美解决mysql客户端授权后连接失败的问题
- Assembly.Load动态加载程序集而不占用文件
- 线性代数及其应用(第三版)2.2节习题解答
- 128道软件测试面试题,面试及答案,视频讲解
- 可口可乐中国联袂青年志发布《中国青年「在乎力」报告》
- SIFT之极值点检测
- 补天漏洞平台为什么能吸引众多白帽和企业?
- 深度学习上采样下采样概念以及实现
- RatingBar的使用
- 物联网发展的三大编程语言
- 为什么你学过Java却忘光了——记第一次助教同学见面会,java开发面试笔试题