框架_【Spring(2)】(SpringAOP)

本文介绍了Spring的面向切面编程(AOP)概念,包括AOP的好处、核心原理和使用案例。详细阐述了AOP的基本概念,如连接点、切入点、通知、切面和代理,并通过例子展示了Spring AOP的XML配置和注解实现方式。AOP的应用场景包括事务处理、权限判断和日志记录。
摘要由CSDN通过智能技术生成


Spring AOP

1. AOP (面向切面编程)

1.1 概述

AOP 为 Aspect Oriented Programming 的缩写
意为:面向切面编程
通过 预编译方式运行期间动态代理实现程序功能的统一维护的一种技术

是OOP的延续(在OOP基础上增加的功能),将业务代码和非业务代码分离
OOP是整体设计,
AOP是针对将业务代码中的公共部分进行提取

开发出第一版程序 修改saveStudent(){}原来的代码
绑定(配置)
savelog()

后来要在第一版的基础上添加功能(保存日志,管理实务,sqlsession.commit())

AOP的思想是 可以帮我们动态代理的调用,而不需要修改代码**

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

好处:减少重复,专注业务

注意:面向切面编程只是面向对象编程的一种补充。

核心原理: 可以帮我们动态代理的调用,而不需要修改源代码

使用动态代理的方式在执行方法前后或者出现异常的时候做加入相关的逻辑

使用案例

         事务处理:开启事务,关闭事务,出现异常后回滚事务
         权限判断:在执行方法前,判断是否具有权限
         日志:在执行前进行日志处理

在这里插入图片描述

1.2 AOP 的基本概念

连接点(Joinpoint)

类中可以被增强的方法

切入点(pointcut)

类中有很多方法可以被增强,但实际中只有 add 和 update被增了,那么 add 和 update 方法就被称为切入点(实际实现的连接点) 实际被增强的方法

通知(Advice)

一个切面在特定的连接点要做的事情(增强的功能)。
执行前通知,方法执行后通知,环绕通知等.

分为:前置通知,后置通知,异常通知,环绕通知

切面(Aspect)

把通知添加到切入点的过程叫切面.

目标(Target):

代理的目标对象(要增强的类)

代理(Proxy)

向目标对象应用通知之后创建的代理对象


1.3 Spring AOP实现

对于 AOP 这种编程思想,很多框架都进行了实现。Spring 就是其中之一,可 以完成面向切面编程。 然而,AspectJ 也实现了 AOP 的功能.

1.3.1 AspectJ

AspectJ 是一个基于 Java 语言的 AOP 框架,它提供了强大的 AOP 功能,且其实现方式更为简捷,使用更为方便, 而且还支持注解式开发。所以,Spring 又将 AspectJ 的对于 AOP 的实现也引 入到了自己的框 架中。
在 Spring 中使用 AOP 开发时,一般使用 AspectJ 的实现方式。

AspectJ 是一个优秀面向切面的框架,它扩展了 Java 语言,提供了强大的切面实现。

AspectJ 中常用的通知(五种类型)

前置通知,后置通知,环绕通知,异常通知,最终通知.


1.3.2 AOP搭建
1 下载 AOP 相关 jar

pom.xml:

<!--aop-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-aspects</artifactId>
            <version>5.2.2.RELEASE</version>
        </dependency>
2. 基于 aspectJ 的 xml 配置方式实现

在这里插入图片描述
在这里插入图片描述
aop.xml:

<!--把装有增强功能的类交给spring管理-->
    <bean id="aopdemo" class="com.ffyc.spring.aop.AOPDemo"></bean>

    <!--编织:将连接点与通知编织到一起-->
    <aop:config>
        <!--配置切入点 为具体的哪个方法增强-->
        <aop:pointcut id="save" expression="execution(* com.ffyc.spring.dao.UserDao.save(..))
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值