记spring事务管理的配置

数据源配置

此配置类提供了使用 DruidDataSource 组件进行数据库连接的必要设置,该组件是一个高性能的 JDBC 连接池。此外还初始化了一个 JdbcTemplate 用于执行查询,以及一个 org.springframework.transaction.PlatformTransactionManager 用于管理事务。

数据源 Bean

dataSource 方法负责创建并配置一个 DruidDataSource Bean。属性如数据库驱动、URL、用户名和密码是从应用配置(例如 application.propertiesapplication.yml)中通过 @Value 注解获取的。

方法签名:

@Bean
public DataSource dataSource(
        @Value("${db.driver}") String driver,
        @Value("${db.url}") String url,
        @Value("${db.username}") String username,
        @Value("${db.password}") String password
) {
    DruidDataSource dataSource = new DruidDataSource();
    dataSource.setDriverClassName(driver);
    dataSource.setUrl(url);
    dataSource.setUsername(username);
    dataSource.setPassword(password);
    return dataSource;
}

参数:

  • driver: JDBC 驱动类名。
  • url: 连接到数据库的 JDBC URL。
  • username: 数据库连接的用户名。
  • password: 数据库连接的密码。

返回值:

  • 配置好的 DruidDataSource 实例。
JdbcTemplate Bean

jdbcTemplate 方法创建并配置了一个 JdbcTemplate Bean,这简化了数据库操作的执行。此 Bean 使用之前创建的数据源。

方法签名:

@Bean
public JdbcTemplate jdbcTemplate(DataSource dataSource) {
    return new JdbcTemplate(dataSource);
}

参数:

  • dataSource: 要由 JdbcTemplate 使用的 DataSource 实例。

返回值:

  • 配置好的 JdbcTemplate 实例,准备好执行数据库操作。
事务管理器 Bean

transactionManager 方法设置了使用提供的数据源的事务管理器。这对于在应用程序中管理事务是必不可少的。

方法签名:

@Bean
public PlatformTransactionManager transactionManager(DataSource dataSource) {
    return new DataSourceTransactionManager(dataSource);
}

参数:

  • dataSource: 要由事务管理器使用的 DataSource 实例。

返回值:

  • 配置好的 PlatformTransactionManager 实例,用于管理指定数据源的事务。

源代码

/**
 * 配置类,用于设置Spring应用的基础配置。
 */
@Configuration
@EnableAspectJAutoProxy  // 开启AOP支持
@EnableTransactionManagement  // 开启事务管理
@ComponentScan(basePackages = "com.gmu")  // 扫描指定包下的组件
@PropertySource("classpath:db.properties")  // 加载外部配置文件
public class AppConfig {

    // 数据源配置
    @Bean
    public DataSource dataSource(
            @Value("${db.driver}") String driver,
            @Value("${db.url}") String url,
            @Value("${db.username}") String username,
            @Value("${db.password}") String password
    ) {
        DruidDataSource dataSource = new DruidDataSource();
        dataSource.setDriverClassName(driver);
        dataSource.setUrl(url);
        dataSource.setUsername(username);
        dataSource.setPassword(password);
        return dataSource;
    }

    // JdbcTemplate 配置
    @Bean
    public JdbcTemplate jdbcTemplate(DataSource dataSource) {
        return new JdbcTemplate(dataSource);
    }

    /**
     * 创建事务管理器对象。
     *
     * @param dataSource 数据源实例
     * @return 配置好的事务管理器
     */
    @Bean
    public PlatformTransactionManager transactionManager(DataSource dataSource) {
        return new DataSourceTransactionManager(dataSource);
    }
}

导入必要依赖

 <!--当你引入Spring Context依赖之后,表示将Spring的基础依赖引入了-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>6.0.6</version>
        </dependency>

        <!--junit5测试-->
        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter-api</artifactId>
            <version>5.3.1</version>
        </dependency>


        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-test</artifactId>
            <version>6.0.6</version>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>jakarta.annotation</groupId>
            <artifactId>jakarta.annotation-api</artifactId>
            <version>2.1.1</version>
        </dependency>

        <!-- 数据库驱动 和 连接池-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.25</version>
        </dependency>

        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.2.8</version>
        </dependency>

        <!-- spring-jdbc -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
            <version>6.0.6</version>
        </dependency>

        <!-- 声明式事务依赖-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-tx</artifactId>
            <version>6.0.6</version>
        </dependency>


        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-aop</artifactId>
            <version>6.0.6</version>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-aspects</artifactId>
            <version>6.0.6</version>
        </dependency>
    </dependencies>

依赖项的解释:

Spring Context
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context</artifactId>
    <version>6.0.6</version>
</dependency>
  • 作用:这是Spring框架的核心模块之一,提供了核心的IoC容器功能。它还包含了对国际化、事件发布、资源加载等功能的支持。
  • 引入其他依赖:当引入 spring-context 依赖时,会自动引入Spring框架的基础依赖,如 spring-corespring-beans
JUnit 5 测试
<dependency>
    <groupId>org.junit.jupiter</groupId>
    <artifactId>junit-jupiter-api</artifactId>
    <version>5.3.1</version>
</dependency>
  • 作用:JUnit 5 是JUnit框架的新版本,提供了一套新的API和特性来编写和运行单元测试。
  • 用途:定义测试用例的API,通常与 junit-jupiter-engine 一起使用来运行测试。
Spring Test
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-test</artifactId>
    <version>6.0.6</version>
    <scope>test</scope>
</dependency>
  • 作用:提供了Spring框架的测试支持,包括Mockito集成、Web MVC测试等。
  • 用途:用于编写Spring应用程序的单元测试和集成测试。
Jakarta Annotations API
<dependency>
    <groupId>jakarta.annotation</groupId>
    <artifactId>jakarta.annotation-api</artifactId>
    <version>2.1.1</version>
</dependency>
  • 作用:Jakarta Annotations API 提供了常用的标准Java注解,如 @Override@Deprecated 等。
  • 用途:用于标记Java类和方法,以提供元数据或控制行为。
MySQL Connector/J
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.25</version>
</dependency>
  • 作用:MySQL的官方Java驱动,用于连接MySQL数据库。
  • 用途:实现与MySQL数据库的交互。
Druid Connection Pool
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid</artifactId>
    <version>1.2.8</version>
</dependency>
  • 作用:高性能的Java数据库连接池实现。
  • 用途:提供高效、稳定的数据库连接管理和性能监控。
Spring JDBC
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-jdbc</artifactId>
    <version>6.0.6</version>
</dependency>
  • 作用:提供了简化JDBC操作的工具,包括异常处理和模板类。
  • 用途:简化数据库访问代码,提高可读性和可维护性。

####Spring TX (Transaction)

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-tx</artifactId>
    <version>6.0.6</version>
</dependency>
  • 作用:提供了声明式事务管理支持。
  • 用途:简化事务管理代码,通过注解或XML配置实现事务边界控制。
Spring AOP
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-aop</artifactId>
    <version>6.0.6</version>
</dependency>
  • 作用:提供了面向切面编程的支持。
  • 用途:实现诸如日志记录、安全控制等横切关注点。
Spring Aspects
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-aspects</artifactId>
    <version>6.0.6</version>
</dependency>
  • 作用:提供了与AspectJ集成的支持。
  • 用途:允许使用AspectJ编写AOP切面,并在Spring环境中使用。

这些依赖项共同构成了一个Spring应用程序的基本架构,支持数据库访问、事务管理、AOP等功能,并且提供了测试支持。

  • 14
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

@小虎同学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值