三大框架 之 Spring-Aop

本文内容纲要:

- AOP

- AOP简介

- 开发存在 的问题

- JDK动态代理

- cglib动态代理

- Spring的AOP简介

- AOP相关术语

- Joinpoint:连接点

- Pointcut:切入点

- Advice:通知

- Introduction:引介

- Target:被增加的对象

- Weaving:织入

- Proxy:代理对象

- Aspect:切面

- Spring中AOP使用

- AOP通知类型

- 前置通知

- 后置通知

- 环绕通知

- 异常抛出通知

- 最终通知

- AOP切入点表达式

- 基于execution函数完成

- 语法

- AOP注解方式ApsectJ开发

- 引入Jar包

- 引入配置文件

- 编写切面类配置

- 使用注解的AOP对象目标类进行增强

- 注解AOP通知类型

- AOP的注解切入点的配置

- 定义多个切入点

- 当使用接口时与不使用接口内部代理区别

目录

  • AOP

    • AOP简介

      • 开发存在 的问题
      • JDK动态代理
      • cglib动态代理
      • Spring的AOP简介

    • AOP相关术语

      • Joinpoint:连接点
      • Pointcut:切入点
      • Advice:通知
      • Introduction:引介
      • Target:被增加的对象
      • Weaving:织入
      • Proxy:代理对象
      • Aspect:切面

    • Spring中AOP使用

    • AOP通知类型

      • 前置通知
      • 后置通知
      • 环绕通知
      • 异常抛出通知
      • 最终通知

    • AOP切入点表达式

      • 基于execution函数完成
      • 语法

    • AOP注解方式ApsectJ开发

      • 引入Jar包

      • 引入配置文件

      • 编写切面类配置

      • 使用注解的AOP对象目标类进行增强

        • 在配置文件中开启以注解形式进行AOP开发
        • 在切面类上添加注解

      • 注解AOP通知类型

        • @Before前置通知

        • @AfterReturning后置通知

          • 没有返回值
          • 有返回值

        • @Around环绕通知

        • @AfterThrowing异常抛出通知

          • 没有获取异常信息
          • 获取异常信息

        • @After最终通知

      • AOP的注解切入点的配置

      • 定义多个切入点

      • 当使用接口时与不使用接口内部代理区别

        • 使用接口
        • 不使用接口

AOP

AOP简介

  • 在软件业,AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,
  • 通过预编译方式和运行期动态代理,实现程序功能的统一维护的一种技术。
  • AOP是OOP的延续,是软件开发中的一个热点,也是Spring框架中的一个重要内容,是函数式编程的一种衍生范型。
  • 利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。

开发存在 的问题

Image

Image

JDK动态代理

Image

cglib动态代理

  • Cglib是一个第三方开源代码
  • 生成类库,动态添加类的属性和方法。
  • 在spring的核心包当中已经引入了cglib

    Image

  • 采用的是继承方式来产生的代理对象

Image

Spring的AOP简介

  • AOP思想最早是由AOP联盟组织提出的

  • Spring使用这种思想最好的框架

  • AspectJ

    Spring的AOP有自己的实现方式,但是这种方式非常繁琐

    AspectJ是一个AOP的框架

    Spring放弃了自己传统的方式 ,引入AspectJ作为自身AOP的开发

AOP相关术语

Joinpoint:连接点

  • 可以被拦截到的方法
  • 能够被增强的方法,这些方法就可以称为是连接点

Image

Pointcut:切入点

  • 真正被拦截的方法
  • 真正被增加的方法

    Image

Advice:通知

增加的内容,通常都是封装成一个方法, 这个方法我们就称为通知

Image

Introduction:引介

  • 类层面的增加
  • 给原有的类添加一些新的属性方法
  • 在开发中通常都是给方法进行增加

Target:被增加的对象

Image

Weaving:织入

将通知应用到目标对象的过程

Proxy:代理对象

Aspect:切面

多个通知和多个切入点的集合

Spring中AOP使用

1.引入spring基本jar包

2.引入aop开发的相关jar包

Image

3.配置文件中引入aop约束

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xmlns:aop="http://www.springframework.org/schema/aop"

xsi:schemaLocation="http://www.springframework.org/schema/beans

http://www.springframework.org/schema/beans/spring-beans.xsd

http://www.springframework.org/schema/aop

http://www.springframework.org/schema/aop/spring-aop.xsd">

</beans>

4.Spring测试

  • 测试时,每次都需要获取工厂
  • 通过spring-test,就不用每次获取
  • 添加测试依赖包

Image

5.测试

Image

Image

6.编写一个切面类

Image

7.将切面交给spring

Image

8.配置AOP完成对目标产生代理

Image

AOP通知类型

前置通知

在目标方法执行之前进行操作

后置通知

在目标方法执行之后 进行操作

Image

Image

环绕通知

在目标方法执行之前 和之后进行操作

public Object arount()

Image

Image

异常抛出通知

在程序出现异常时进行操作

Image

Image

最终通知

无论代码是否有异常,都会执行

Image

AOP切入点表达式

基于execution函数完成

语法

【访问修饰符】 方法返回值 包名.类名.方法名(参数)

public com.myxq.demo2.GoodsDaoImpl.save(..)

参数为任意参数

* com.myxq.demo2.GoodsDaoImpl.save(..)

任意类型

* com.myxq.demo2.GoodsDaoImpl+.save(..)

加上当前类和子类

* com.myxq..*.*(..)

com.myxq包以及子包下面所有类的所有方法

Image

AOP注解方式ApsectJ开发

引入Jar包

Image

引入配置文件

Image

编写切面类配置

Image

Image

使用注解的AOP对象目标类进行增强

在配置文件中开启以注解形式进行AOP开发

Image

在切面类上添加注解

Image

注解AOP通知类型

@Before前置通知

@AfterReturning后置通知

没有返回值

Image

有返回值

Image

@Around环绕通知

Image

@AfterThrowing异常抛出通知

没有获取异常信息

Image

获取异常信息

Image

@After最终通知

Image

AOP的注解切入点的配置

  • 有时候一个方法要添加前置通知对又要添加异常通知,又要添加最终通知
  • 可以在切面当中定义好切入点
  • 在通知当中直接使用定义好的切入点表达式

Image

定义多个切入点

一个通知同时定义到多个方法当中

Image

当使用接口时与不使用接口内部代理区别

使用接口

Image

不使用接口

Image

本文内容总结:AOP,AOP简介,开发存在 的问题,JDK动态代理,cglib动态代理,Spring的AOP简介,AOP相关术语,Joinpoint:连接点,Pointcut:切入点,Advice:通知,Introduction:引介,Target:被增加的对象,Weaving:织入,Proxy:代理对象,Aspect:切面,Spring中AOP使用,AOP通知类型,前置通知,后置通知,环绕通知,异常抛出通知,最终通知,AOP切入点表达式,基于execution函数完成,语法,AOP注解方式ApsectJ开发,引入Jar包,引入配置文件,编写切面类配置,使用注解的AOP对象目标类进行增强,注解AOP通知类型,AOP的注解切入点的配置,定义多个切入点,当使用接口时与不使用接口内部代理区别,

原文链接:https://www.cnblogs.com/mumuyinxin/p/10738868.html

以上是 三大框架 之 Spring-Aop 的全部内容, 来源链接: utcz.com/z/296672.html

回到顶部