SSM学习(五)---Spring AOP&事务管理

1.AOP简介

Aspect Oriented Programming 面向切面编程,指的是在不惊动原始设计的基础上为其进行功能增强
Spring理念:无侵入式编程
在这里插入图片描述
在这里插入图片描述

AOP入门案例-使用aop在update()方法上打印当前系统时间

1.导入AOP相关坐标

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

注意:spring-context坐标包含spring-aop坐标

2.定义dao接口和实现类

dao接口:

package com.itheima.dao;

public interface BookDao {
    public void save();
    public void update();
}

实现类:

package com.itheima.dao.impl;

import com.itheima.dao.BookDao;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Repository;

@Repository
public class BookDaoImpl implements BookDao {


    public void save() {
        System.out.println(System.currentTimeMillis());
        System.out.println("book dao save ...");
    }

    public void update() {
        System.out.println("bookupadte");
    }
}

3.定义通知类,制作通知

注意:切入点定义依托于一个不具有任何意义的方法进行,无参,无返回值,方法体无实际逻辑
@Component表示将该类交给spring容器来管理
@Aspect 表示该类为通知类,使其功能生效
@Pointcut声明该方法为切入点
@Before 表示在切入点之前执行通知
在这里插入图片描述

4.开启spring对aop注解驱动支持-@EnableAspectJAutoProxy

在这里插入图片描述

AOP核心概念

目标对象:原始功能去掉共性功能对应的类产生的对象,这种对象是无法完成最终工作的
代理:目标对象无法直接完成工作,需要对其进行功能回填,通过原始对象的代理对象来实现
SpringAOP本质:代理模式

AOP切入点表达式

切入点:要进行增强的方法
切入点表达式:要进行增强的方法的描述方式
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

AOP通知

1.通知类型

前置通知

@Before在切入点之前执行
在这里插入图片描述

后置通知

@After在切入点之后执行
在这里插入图片描述

环绕通知

@Around围绕着方法执行

//获取原始方法的方法类型和方法名
Signature signature=pjp.getSignature();
//方法类型
signature.getDeclaringTypeName();
//方法名称
signature.getName();

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

返回后通知

@AfterReturning 原方法正常运行完成后执行

在这里插入图片描述

抛出异常后通知

@AfterThrowing 原方法抛出异常后执行
在这里插入图片描述

2.获取通知数据

在这里插入图片描述

1.获取原方法参数

Object[] args=jp.getArgs();

在这里插入图片描述
环绕通知中在调用原方法的同时可以接收参数

//接收参数
Object[] args=pip.getArgs();
//修改参数
args[0]=66;
//传递参数
pip.proceed(args);

2.接收原方法的返回值

注意:形参JoinPoint必须在前
在这里插入图片描述
3.异常
在这里插入图片描述

1.Spring事务简介

事务作用:在数据层保障一系列的数据库操作同成功同失败
Spring事务作用:在数据层或业务层保障一系列的数据库操作同成功同失败

1.在业务层接口上添加Spring事务管理

在这里插入图片描述

设置事务管理器

PlatformTransactionManager为Spring定义的事务接口
DataSourceTransactionManager为其实现类,内部使用JDBC事务
在这里插入图片描述

3.开启注解驱动事务

在这里插入图片描述

事务角色

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

事务的属性

事务配置

在这里插入图片描述

事务的传播行为:事务协调员对事务管理员所携带的事务的处理态度(可以使两者不同为一个事务)

//开启新的事务
 @Transactional(Propagation=Propagation.REQUIRES_NEW)

在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值