Spring框架(第3天)——AOP和声明式事务

发布时间:2023-02-02 13:00

Spring框架(第3天)——AOP和声明式事务

回顾

  1. 能够使用JdbcTemplate完成增删查改操作
JdbcTemplate类 说明
public JdbcTemplate(DataSource dataSource) 创建一个模板对象,注入数据源
public int update(String sql, Object…args) 增删改操作
T queryForObject(String sql, RowMapper rowMapper, Object… args) 查询1条记录
List query(String sql, RowMapper rowMapper, Object… args) 查询多条记录
BeanPropertyRowMapper类的构造方法 说明
public BeanPropertyRowMapper(Class mappedClass) 用于行映射的实现类
  1. 使用注解改造CRUD工程

    @Repository:配置在DAO层

    @Service:配置在业务层

    @Autowired:注入对象

  2. 基于纯注解改造CRUD工程

注解 作用
@Configuration 表示这是一个配置类
@ComponentScan 扫描基包
@Import 导入其它的配置类
@PropertySource 将属性文件加载到容器中
@Value 注入属性值
@Bean 放在方法:
1. 把方法的返回值放在容器中
2. 可以指定对象的id,如果没有指定id就是方法名字
3. 如果方法有参数,从容器中按类型匹配的方式注入
  1. 能够实现Spring框架整合Junit
注解名 属性作用
@RunWith(SpringJUnit4ClassRunner.class)
@ExtendWith (JUnit5)
作用:指定第三方运行器
在JUnit中这个注解变了
@ContextConfiguration locations: 默认指定XML的配置文件
classes: 配置类的类型

扩展:JUnit5


<dependency>
    <groupId>org.junit.jupitergroupId>
    <artifactId>junit-jupiterartifactId>
    <version>5.5.2version>
    <scope>testscope>
dependency>
package com.itheima.test;

import com.itheima.entity.Account;
import com.itheima.service.AccountService;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit.jupiter.SpringExtension;

import java.util.List;

//指定运行器
@ExtendWith(SpringExtension.class)
@ContextConfiguration("classpath:applicationContext.xml")  //指定配置文件
public class TestAccount2 {

    //获取业务层对象
    @Autowired
    AccountService accountService;

    //查询所有记录
    @Test
    public void testFindAll() {
        List<Account> accountList = accountService.findAll();
        accountList.forEach(System.out::println);
    }

}
@BeforeAll 修饰静态方法,在类加载的时候执行1次
@BeforeEach 在每个测试方法运行前运行
@Test 用在测试类上
@AfterEach 在每个测试方法后运行
@AfterAll 修饰静态方法,在所有测试结束以后,只执行1次

学习目标

  1. 理解AOP相关概念和术语
  2. 理解AspectJ表达式语言
  3. 掌握AOP的注解实现
  4. 能够理解事务的隔离级别
  5. 能够理解事务的传播行为
  6. 能够应用声明式事务
  7. 基于AOP配置的事务控制案例
  8. 基于AOP注解的事务控制案例

1. AOP的基本概念

目标

  1. 什么是切面?
  2. 什么是面向切面编程?
  3. 面向切面编程好处?

AOP概念和应用场景

引入案例

比如银行系统会有一个取款流程,传统程序的流程是这样的:
Spring框架(第3天)——AOP和声明式事务_第1张图片
另外系统还会有一个查询余额流程
Spring框架(第3天)——AOP和声明式事务_第2张图片
把这两个流程放到一起:
Spring框架(第3天)——AOP和声明式事务_第3张图片
两者有一个相同的验证流程:
Spring框架(第3天)——AOP和声明式事务_第4张图片

  • 发现验证用户的功能是相同的,但又在不同地方出现,我们可以把它提取出来,做成切面类在程序执行的时候动态的添加到业务程序中去,这个切面类可以在不同的地方重用,这叫面向切面编程。
  • 面向切面编程的核心就是代理模式

ItVuer - 免责声明 - 关于我们 - 联系我们

本网站信息来源于互联网,如有侵权请联系:561261067@qq.com

桂ICP备16001015号