Spring AOP学习笔记(1)-概念
1.Aspect
横切在多个类的一个关注点,在Spring AOP中,aspect实现是一个规则的类或@Aspect标注的规则类。例如:事务管理
2.Join point
程序执行过程中的一个点,例如:执行一个方法或处理一个异常,在Spring AOP中,一个连接点表示一个方法执行执行
3.Advice
在一个特定的连接点上所采取的动作,类型包括around,before,after等,Spring中 advice就是一个interceptor模式,包括around连接点的interceptor链
4.Pointcut
切点,匹配连接点(join points),跟Advice相关,连接点就是切点表达式匹配出来的,Spring默认使用AspectJ切点表达式
5.Introduction
声明一个类型的其他方法或字段,Spring AOP允许引入新接口(和对应的实现)的任意advised对象
6.Target object
由一个或多个切面advised对象,从SpringAOP实现代理运行开始,这个对象一直是一个代理对象
7.AOP proxy
AOP框架创建的对象,该对象实现了aspect规则(advise 方法执行等),在Spring框架中,一个AOP代理就是一个JDK动态代理或CGLIB代理
8.Weaving
连接aspect和其他应用类型或对象而创建的advised 对象,它可以运行在编译时,载入时或运行时,Spring AOP在运行时执行织入操作
9.Advice 类型
Before advice:在连接点之前执行,它无法阻止AOP执行连接点(除非抛出异常)
After returning advice: 在一个连接点正常完成后执行,例如,一个方法正常返回值且未抛出异常
After throwing advice:如果一个方法因抛出异常而退出,这时就会执行该Advice
After (finally) advice: 无论方法是正常返回还是抛出异常都会执行该Advice
Around advice: 在方法before之前和after之后执行该Advice,它也可以决定是否继续向后执行或返回自定义值或抛出异常
10.AOP代理
Spring AOP默认使用标准的J2SE动态代理,它可以代理任意接口。也可以使用CGLIB代理,当一个业务对象不实现接口的情况下,默认使用CGLIB代理,但建议使用面向接口编程。
Spring AOP学习笔记(1)-概念的更多相关文章
- Spring AOP学习笔记01:AOP概述
1. AOP概述 软件开发一直在寻求更加高效.更易维护甚至更易扩展的方式.为了提高开发效率,我们对开发使用的语言进行抽象,走过了从汇编时代到现在各种高级语言繁盛之时期:为了便于维护和扩展,我们对某些相 ...
- Spring AOP学习笔记02:如何开启AOP
上文简要总结了一些AOP的基本概念,并在此基础上叙述了Spring AOP的基本原理,并且辅以一个简单例子帮助理解.从本文开始,我们要开始深入到源码层面来一探Spring AOP魔法的原理了. 要使用 ...
- Spring AOP学习笔记03:AOP的核心实现之获取增强器
上文讲了spring是如何开启AOP的,简单点说就是将AnnotationAwareAspectJAutoProxyCreator这个类注册到容器中,因为这个类最终实现了BeanPostProcess ...
- Spring AOP学习笔记05:AOP失效的罪因
前面的文章中我们介绍了Spring AOP的简单使用,并从源码的角度学习了其底层的实现原理,有了这些基础之后,本文来讨论一下Spring AOP失效的问题,这个问题可能我们在平时工作中或多或少也会碰到 ...
- Spring AOP学习笔记
Spring提供了一站式解决方案: 1) Spring Core spring的核心功能: IOC容器, 解决对象创建及依赖关系 2) Spring Web ...
- Spring AOP学习笔记04:AOP核心实现之创建代理
上文中,我们分析了对所有增强器的获取以及获取匹配的增强器,在本文中我们就来分析一下Spring AOP中另一部分核心逻辑--代理的创建.这部分逻辑的入口是在wrapIfNecessary()方法中紧接 ...
- Spring入门IOC和AOP学习笔记
Spring入门IOC和AOP学习笔记 概述 Spring框架的核心有两个: Spring容器作为超级大工厂,负责管理.创建所有的Java对象,这些Java对象被称为Bean. Spring容器管理容 ...
- 【转】Spring.NET学习笔记——目录
目录 前言 Spring.NET学习笔记——前言 第一阶段:控制反转与依赖注入IoC&DI Spring.NET学习笔记1——控制反转(基础篇) Level 200 Spring.NET学习笔 ...
- Spring.NET学习笔记——目录(原)
目录 前言 Spring.NET学习笔记——前言 第一阶段:控制反转与依赖注入IoC&DI Spring.NET学习笔记1——控制反转(基础篇) Level 200 Spring.NET学习笔 ...
随机推荐
- JavaScript(5)—— 变量及数据类型
JavaScript和Java在概念和设计方面都是完全不同的语言.JavaScript由Brendan Eich于1995年发明,并于1997年成为ECMA标准.ECMA-262是官方名称.ECMAS ...
- 关于keildownload键变为灰色不能使用的问题
有时候 有些朋友可能会遇到这样的问题 突然间download键变成灰色,导致不能将程序下载到芯片中 遇到中问题如果不是软件卡了 那就是可能一不小心点错了,关掉了下载条件“约定” 可以点“魔术棒” ...
- python 其实不用框架你也可以实现ORM
""" ORM思路归纳: 1.将每张表映射成不同的表类,一个表类映射一张表.表类的类属性 需要有表名.字段名 将每个字段类型映射为字段类型类,一个字段类型类映射一个类 字 ...
- 21.根据hive绑定数据统计计算保存到hive表中
创建upflow表 create external table mydb2.upflow (ip string,sum string) row format delimited fields term ...
- PTA (Advanced Level)1082.Read Number in Chinese
Given an integer with no more than 9 digits, you are supposed to read it in the traditional Chinese ...
- Mf175-用户注册功能-埋点敏捷方案
在不了解埋点系统的情况下,花了五六个小时 帮一位PM朋友做的方案.记录下来.以备后续参考 Mf178-用户注册功能-埋点敏捷方案 版本号 时间 撰写人 描述 V1.0 20190515-10:50:0 ...
- Centos删除多余的Linux内核
删除开机多余kernel(centos) yum update 命令会大范围升级,有时候linux内核也会升级,升级后开机画面就会出现多个内核供你选择,所有强迫症的我需要删除旧的 ⒈查看正在使用的内核 ...
- Codeforces Round #333 (Div. 2) B. Approximating a Constant Range
B. Approximating a Constant Range Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com ...
- C++多线程基础学习笔记(九)
一.std::atomic续谈 上一章说到std::atomic是针对一个变量的,这里补充一下针对的变量操作一般是++,+=,--,&=等等运算 .以下这种不可取:a=a+1; 二.std:: ...
- 一些基础的python小程序
1.求下列数奇偶分数: list1 = [1,2,3,4,5,6,7,8,9,10] # 先创建两个空列表 jishu = [] oushu = [] # 使用for循环迭代list1一一取出进行判断 ...