Spring --AOP学习

01-aop简介-什么是aop
aop是什么?
aop----Aspect Oriented Programing :面向切面编程;
如果要完成一个功能,找切面即可;
oop----Object Oriented Programing :面向对象编程:
如果要完成一个功能,找对象即可;

AOP有什么作用?
	在不修改源码的情况下,对方法增强,最终达到的效果就是业务之间完成解耦;

02-aop简介-aop的作用及其优势

03-aop简介-aop的底层实现
实现aop的技术是什么?
动态代理:
JDK代理:
基于接口的动态代理;
cglib代理:
基于父类的动态代理;

*******************************
	如果把一个对象的创建权交给spring,让spring生成一个动态代理对象(默认情况):
		如果目标对象实现了接口:就使用JDK动态代理;
		如果目标对象没有实现接口:则使用cglib动态代理;

04-aop简介-基于jdk的动态代理
使用jdk动态代理涉及到的3个角色?
目标对象;
代理对象;
接口;

05-aop简介-基于cglib的动态代理(了解)
使用cglib动态代理的2个角色?
目标对象;
代理对象;
********************************
cglib生成的动态代理对象,它的父类就是目标对象对应的类

****************************************************************
AOP有什么作用:
	在不修改源码的情况下,对方法增强,最终达到的效果就是业务之间完成解耦,解耦目标提高灵活性、复用性、可维护性;
	
aop----Aspect Oriented Programing :面向切面编程;
		如果要完成一个功能,找切面即可;
		
		
		如何找切面?
			只需要在配置文件中,通过配置切入点和通知,就能找到切面
		
AOP相关概念:
	joinpoint连接点:
		可以被增强的方法;
		
	pointcut切入点:
		真正被增强的方法;
		
	advice通知:
		增强的内容;
		
	aspect切面:
		切入点+通知;
		
	Weaving织入:
		在程序的运行过程中,真正的把切入点和通知结合到一块,称之为织入;

06-aop简介-aop相关概念
Target(目标对象):代理的目标对象
Proxy (代理):一个类被 AOP 织入增强后,就产生一个结果代理类
Joinpoint(连接点):所谓连接点是指那些被拦截到的点。在spring中,这些点指的是方法,因为spring只支持方法类型的连接点
Pointcut(切入点):所谓切入点是指我们要对哪些 Joinpoint 进行拦截的定义
Advice(通知/ 增强):所谓通知是指拦截到 Joinpoint 之后所要做的事情就是通知
Aspect(切面):是切入点和通知(引介)的结合
Weaving(织入):是指把增强应用到目标对象来创建新的代理对象的过程。spring采用动态代理织入,而AspectJ采用编译期织入和类装载期织入

07-aop简介-aop开发明确的事项和知识要点
把通知和切入点结合到一块的底层技术是什么?
动态代理

08-xml方式实现aop-快速入门
1.导入坐标:
spring-context;
aspectjweaver;
2.编写java代码;
3.编写applicationContext.xml核心配置文件;
4.测试(spring集成junit测试)

aop:config

<aop:aspect ref=“myAspect”>


<aop:before method=“before” pointcut=“execution(public void live.longmarch.aop.Target.save())”></aop:before>
</aop:aspect>
</aop:config>

09-xml方式实现aop-切点表达式的写法
execution(public void com.itheima.aop.Target.save())
execution([修饰符] 返回值类型 包名.类名.方法名(参数))
访问修饰符可不可以省略?
可以
* 指的是什么?
任意的 返回值/包名/类名/方法名
… 指的是什么?
任意的 参数/包及子包;

最常用的写法:
	execution(* cn.itcast.service.impl.*.*(..));

10-xml方式实现aop-通知的种类
以下每一种通知在什么时候执行?
前置通知:
目标方法执行之前执行
后置通知:
目标方法执行之后执行
环绕通知:
程序员决定
异常通知:
目标方法执行发生异常后执行
最终通知:
不管目标方法有没有发生异常,都会执行

环绕通知的方法有什么要求?
增强内容的方法上必须声明一个参数,ProceedingJoinPoint
public Object around(ProceedingJoinPoint pjp) throws Throwable {
    //代表的是正在执行的切入点方法;
	//相当于把切入点方法的执行权交给了程序员
	
}	

11-xml方式实现aop-切点表达式的抽取
为什么要抽取切点表达式?
优化代码 共性抽取,便于代码的维护

12-xml方式实现aop-知识要点

13-注解方式实现aop-快速入门
使用注解完成aop开发的步骤?
1.通过@Aspect标识切面类;
2.通过@Component把切面类交给spring管理;
3.通过@Before(切入点表达式)/@AfterReturning(切入点表达式)…配置通知和切入点;
4.在核心配置文件中,开启包扫描;
<context:component-scan base-package=“com.itheima.anno”/>
5.在核心配置文件中,开启aop自动代理;
aop:aspectj-autoproxy/

14-注解方式实现aop-注解通知种类和切点表达式抽取
引用抽取后的表达式的两种方式?
@Pointcut(“execution(void live.longmarch.anno..(…))”)
public void pointcut(){}

15-注解方式实现aop-知识要点

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值