Spring中的AOP

Spring 中AOP的三种实现方式

(这篇博客是本人csdn原创)

Spring中的AOP是什么

首先AOP为Aspect Oriented Programming的缩写,在软件行业开发中的翻译是面向切面编程,通过预编译和动态代理的方式实现程序统一维护的一种方式,同时它也是对OOP(面向对象)的一种延续。利用AOP可以实现对业务代码的隔离,从而使得业务之间的耦合性降低。提高软件的开发效率和一些程序的可用性!

Spring 中AOP 的一些主要功能

  • 日志记录
  • 性能统计
  • 安全控制
  • 异常记录
  • 事务处理

主要意图

将日志管理 ,性能统计,安全控制,异常记录等从代码中分离出来,对这些行为的分离,我们希望他们可以分离到非业务逻辑的代码中去,进而改变这些代码影响业务逻辑代码!

使用AOP织入,需要导入一个依赖包

  <dependency>
        <groupId>org.aspectj</groupId>
        <artifactId>aspectjweaver</artifactId>
        <version>1.9.6</version>
    </dependency>

在这里插入图片描述

第一种实现方式

通过Spring AoI实现
首先来编写业务接口和实现类
业务接口
在这里插入图片描述

实现类

在这里插入图片描述

编写两个增强类,编写两个 一个前置增强,一个后置增强

在这里插入图片描述
在这里插入图片描述

编写配置文件

<?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">
    <!--注册bean-->
    <bean id="userService" class="com.jie.service.UserServiceImpl"/>
    <bean id="log" class="com.jie.log.Log"/>
    <bean id="afterLog" class="com.jie.log.AfterLog"/>
<!--    Aop配置-->
    <aop:config>
<!--        切入点 expression:表达式要执行的方法-->
        <aop:pointcut id="pointcut" expression="execution(* com.jie.service.UserServiceImpl.*(..))"/>
<!--        执行环绕;advice-ref执行方法,pointcut-ref切入点-->
        <aop:advisor advice-ref="log" pointcut-ref="pointcut"/>

        <aop:advisor advice-ref="afterLog" pointcut-ref="pointcut"/>

    </aop:config>

</beans>

在这里插入图片描述

编写测试及其结果

在这里插入图片描述

使用自定义类来实现AOP

写入一个自己写的切入类
在这里插入图片描述

去spring中配置

在这里插入图片描述
测试结果

在这里插入图片描述

使用注解实现AOP

在这里插入图片描述

编写配置文件

在这里插入图片描述

测试结果

在这里插入图片描述

posted @ 2020-12-21 08:40  xiaozhounandu  阅读(79)  评论(0编辑  收藏  举报