很久没写文章了,因为围绕这个内容录了视频,视频里基于提纲做了很多扩展,所以本文也只是把大纲贴出来,没有详细展开,具体还是请看视频吧【youku画面太垃圾了,我已在YOUKU上删除,上载到了网盘上】:
视频地址:
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
【JAVA中面向切面的编程技术(简称AOP)】【-陈杰第1部分】_2018-09-01
链接:https://pan.baidu.com/s/1sU_LstjK9REY8Qm6wjmM2A 密码:7fs6
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
【JAVA中面向切面的编程技术(简称AOP)】【-陈杰第2部分】_2018-09-01
链接:https://pan.baidu.com/s/1m8lTTJE99bTUGm8kJH8W6w 密码:n69p
*********************************************************************************************************************
1编程技术的发展概述
1.1 面向过程的编程POP
面向过程编程POP(Procedure Oriented Programming)
1.2 面向对象编程OOP
向对象编程OOP(Object Oriented Programming)
1.3 面向切面编程AOP
面向切面编程AOP(Aspect Oriented Programming)
2 Java中AOP的实现方式
2.1 使用静态代理来模拟AOP编程【重点】
注意:静态代理本质上还是OOP编程,在设计模式中叫代理模式,此处用来模拟AOP,便于和后面讲的动态代理做比较。
2.2 使用动态代理实现AOP编程【次重点】
(1)基于JDK提供的功能实现动态代理【次重点】
JDK提供的动态代理功能有局限性,只能基于接口来实现,也就是说被代理的类中需要进行切入的方法必须抽取出来定义在interface里。
(2)基于第三方类库实现动态代理【次重点】
比JDK提供的基于接口的代理功能要强,可以直接对不继承任何接口的类进行代理,而且可以用字节码技术对没有源码的类进行代理。
第三方类库实现代理比较经典和常用的是cglib,在3.2.0.RELEASE版本之前【2012年12月】,spring还依赖于cglib的jar包,但是之后就不依赖cglib的jar包了,因为spring为了避免版本冲突的问题,已经将cglib的代码集成到spring框架内部了。
2.3 使用织入的方式实现AOP编程
织入就是不创建代理类,而是直接对目标类进行修改(类编译时修改或者类装载时修改),直接在目标类的方法中插入额外的代码。注意这和静态代理和动态代理都不同,此时并不生成代理类,而是对目标类动了手脚。
Aspectj就是一个支持用织入的方式来实现AOP编程的工具,如果要使用Aspectj的织入功能,需要使用到Aspectj提供的编译器,使用不是很方便。Aspectj提供了两种织入方式:编译期织织入和类加载期织入。类加载期织入也就是LTW(Load Time Weaving)。
Spring框架实现AOP时用到了Aspectj工具的部分功能(所以需要引入aspectjweaver这个jar包),但是Spring没有用织入的方式来提供AOP编程,使用的还是动态代理技术。
3 Spring 框架中AOP的使用【重点】
3.1 Spring框架中 AOP 相关的一些概念和术语
(1) JoinPoint(连接点) 【重点】
连接点是程序执行时的一些边界,例如类初始化前,初始化后,方法调用前,方法被调用后,方法抛出异常后。
(2)Pointcut(切点)【重点】
Pointcut(切点)是一些特殊的JointPoint(连接点),是你绑定了Advice(通知)的JointPoint(连接点)。在使用时,Pointcut(切点)体现为一个规则表达式,该表达式可以让程序找出特定的那些JoinPoint(连接点)。
(3)Advice(通知)【重点】
当程序运行到满足条件的边界点时,AOP机制要回调你定制的某个些方法,这些方法就是Advice(通知),有的资料中把Advice叫增强。在使用时,Advice(通知)体现为一个可执行的方法。
【Advice的类型主要有Before,After,AfterReturning,AfterThrowing,Around】
(4)Aspect(切面)【重点】
一些Pointcut(切点)和Advice(通知)就构成了一个Aspect(切面)。在使用时,Aspect对应一个类。
(5)其他一些概念
Advisor(顾问)、Target(目标对象)、Proxy(代理)、Weaving(织入)。
3.2 Spring 框架中AOP的用法演示【重点】
使用集成开发工具eclipse做演示,项目构建工具使用maven。
视频地址:
【JAVA中面向切面的编程技术(简称AOP)】【-陈杰第1部分】_2018-09-01
【JAVA中面向切面的编程技术(简称AOP)】【-陈杰第2部分】_2018-09-01
*********************************************************************************************************************