spring in action小结4.1
1 横切关注点:可以被描述为影响应用多处的功能。横切关注点可以被模块化为特殊的类,这些类被称为切面。
2 AOP自己的术语,通知(Advice)、切点(pointcut)、连接点(joinpoint)
切面的工作被称为通知,通知定义了切面是什么以及如何使用,还解决了何时执行这个工作的问题。
3 切面的通知类型
1)前置通知(Before)2)后置通知(After)3)返回通知(After-returning)4)异常通知(After-throwing)5)环绕通知(Around)
4 连接点(join point):是在应用执行过程中能够插入切面的一个点。切面代码可以利用这个点插入到应用的正常流程中,并添加新的行为。
5 切点(Pointcut):切点有助于缩小切面通知的连接点范围。如果说通知定义了切面的“什么”和“何时”的话,切点就定义了“何处”。切点的定义会匹配通知所要所要织入的一个或多个连接点。
6 切面(Aspect):切面是通知和切点的结合。通知和切点共同定义了切面的全部内容--他是什么,在何时和何处完成其功能。
7 引入(Introduction):引入允许我们向现有的类添加新方法或属性。
8 织入(Weaving):织入是把切面应用到目标对象并创建新的代理对象的过程。切面在指定的连接点被织入到目标对象中。
可以进行织入的点
1)编译器:切面在目标类编译时被织入,这种方式需要特殊的编译器。
2)类加载期:切面在目标类加载到 JVM 时被织入。需要特殊的类加载器,他可以在目标类被引入应用之前增强该目标类的字节码。
3)运行期:切面在应用运行的某个时刻被织入。一般情况下,在织入切面时,AOP容器会为目标对象动态的创建一个代理对象。Spring AOP就是以这种方式织入切面的。
9 Spring是基于动态代理的,所以spring只支持方法连接点,并且不支持构造器连接点,我们无法在bean创建时通知应用。
10 spring支持的切点表达式
| 指示器 | 描述 |
| arg() | 限制连接点匹配参数为指定类型的执行方法 |
| @args() | 限制连接点匹配参数由指定注解标注的执行方法 |
| execution() | 用于匹配时连接点的执行方法 |
| this() | 限制连接点匹配AOP代理的bean引用为指定类型的类 |
| target() | 限制连接点匹配目标对象为指定类型的类 |
| @target() | 限制连接点匹配特定的执行对象,这些对象对应的类要具有指定类型的注解 |
| within() | 限制连接点匹配指定类型 |
| @annotation | 限制匹配带由指定注解的连接点 |
11 切入点表达式,spring具体到方法,因此指示器要指定到方法。在指示器中可以使用逻辑关系进一步限制切点位置。可以使用and/or/not。
12 spring的通知
| 注解 | 通知 |
| @After | 通知方法会在目标方法返回或抛出异常后调用 |
| @AfterReturning | 通知方法会在目标方法返回后调用 |
| @AfterThrowing | 通知方法会在目标方法抛出异常后调用 |
| @Around | 通知方法会将目标方法封装起来 |
| @Bedore | 通知方法会在目标方法调用之前执行 |
13 定义切面
@Aspect
public class MyInspect { /**
*
*/
@Pointcut("execution(* com.dwzx.zjg.investfinance.buy.test.*.*(..))")
public void performance() {} /**
*
*/
@Before("performance()")
public void fun1() {
System.out.println("fun1");
} }
@Pointcut定义了一个切点表达式,在其他方法中可以直接引用。
14 开启切面注解解析
在JavaConfig中使用如下方式,在配置类的类级别上使用@EnableAspectJAutoProxy 启用自动代理功能。
@Configuration
@EnableAspectJAutoProxy
@ComponentScan
public class ConcertConfig { /**
* 声明MyInspect Bean
* @return
*/
@Bean
public MyInspect myInspect() {
return new MyInspect();
}
}
spring in action小结4.1的更多相关文章
- spring in action小结3 运行时值注入
讨论依赖注入的时候,通常讨论的是一个bean引用注入到另一个bean的属性或者构造器参数中.bean装配的另一个方面是将值注入到bean的属性或者构造器参数中.避免硬编码的方式就是运行时确定值. sp ...
- spring in action小结2
1 @Component注解声明的类都会创建为bean,并且bean的id为首字母小写的类名. 2 解决bean自动装配奇异性问题,可以使用@Qualifier("name")限定 ...
- 1、Spring In Action 4th笔记(1)
Spring In Action 4th笔记(1) 2016-12-28 1.Spring是一个框架,致力于减轻JEE的开发,它有4个特点: 1.1 基于POJO(Plain Ordinary Jav ...
- spring in action 4th --- quick start
读spring in action. 环境搭建 quick-start依赖注入 面向切面 1.环境搭建 jdk1.8 gradle 2.12 Intelij idea 2016.2.1 1.1创建一个 ...
- ssh整合随笔(注解方式,Spring 管理action)
Web.xml<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi=" ...
- Spring in action记录
最近一段时间重新学习了一遍SPRING,现在对这些笔记整理一下,一来算是对之前的学习有一个交代,二来当是重新学习一次,三来可以留下备份 这次学习中以SPRING IN ACTION 4这学习资料,整书 ...
- Spring in Action 4th 学习笔记 之 AOP
前提:本文中的AOP仅限于Spring AOP. 先说说为什么需要AOP 最简单的一个例子就是日志记录,如果想记录一些方法的执行情况,最笨的办法就是修改每一个需要记录的方法.但这,真的很笨... 好的 ...
- 学习spring in action 第一天
这段时间,开始学习java吧,因为C sharp 学习了java的大量语法格式,所以,留意下,就不会错了,java 有的c sharp也有,而且之前我也学习过java的桌面开发,但是一下子上来就要自己 ...
- spring in action学习笔记十五:配置DispatcherServlet和ContextLoaderListener的几种方式。
在spring in action中论述了:DispatcherServlet和ContextLoaderListener的关系,简言之就是DispatcherServlet是用于加载web层的组件的 ...
随机推荐
- 仿LOL项目开发第四天
---恢复内容开始--- 仿LOL项目开发第四天 by草帽 上节讲了几乎所有的更新版本的逻辑,那么这节课我们来补充界面框架的搭建的讲解. 我们知道游戏中的每个界面都有自己的一个类型:比如登陆界面,创建 ...
- UTC 转本地时间
String dateStr = "Wed Dec 10 00:00:00 UTC 0800 2014"; //Wed Dec 10 00:00:00 UTC 0800 2014 ...
- GSM模块_STM32实现GPRS与服务器数据传输经验总结
硬件环境 MCU:STM32F103RET6 (调试器:J-Link) GSM模块:Ai-Thinker_A6 (安信可)(还需要配一个串口打印工具,当初选这个模块纯粹是因为价格是最便宜的) ---- ...
- jquery动态添加删除div--事件绑定,对象克隆
我想做一个可以动态添加删除div的功能.中间遇到一个问题,最后在manong123.com开发文摘 版主的热心帮助下解答了(答案在最后) 使用到的jquery方法和思想就是:事件的绑定和销毁(unbi ...
- ECharts学习总结(五):echarts的Option概览
注:下面内容摘自echarts官网,原文地址:http://echarts.baidu.com/doc/doc.html#%E9%80%89%E9%A1%B9 option 图表选项,包含图表实例任何 ...
- PHP防抓取数据curl 解决方法
1.使用Snoopy或curl传搜索引擎爬虫的USERAGENT值. 查看搜索引擎爬虫的USERAGENT值:http://www.cnblogs.com/grimm/p/5068092.html ( ...
- UVA11402 - Ahoy, Pirates!(线段树)
UVA11402 - Ahoy, Pirates!(线段树) option=com_onlinejudge&Itemid=8&category=24&page=show_pro ...
- 从主机系统向虚拟机系统里面copy 文件
从主机系统向虚拟机系统里面copy 文件: 一:请确保你的虚拟机里面安装了 VMTools 1:安装VMTools 2: 进入虚拟机系统里面,如果没有自动运行 VMtool安装程序,请打开我的电脑,手 ...
- 格式化文本数据抽取工具awk
在管理和维护Linux系统过程中,有时可能需要从一个具有一定格式的文本(格式化文本)中抽取数据,这时可以使用awk编辑器来完成这项任务.发明这个工具的作者是Aho.Weinberg和Kernighan ...
- TCP/IP 工具Ping
TCP/IP 工具Ping 在网络中Ping 是一个十分好用的TCP/IP工具.它主要的功能是用来检测网络的连通情况和分析网络速度. C:\Users\gechong>ping /? 用法: p ...