首页 > 其他分享 >Spring28 - 全注解实现事务管理

Spring28 - 全注解实现事务管理

时间:2023-02-08 16:26:11浏览次数:43  
标签:事务管理 Spring28 springframework dataSource context org import public 注解

全注解配置事务

核心思想:使用配置类替代配置文件

①添加配置类

package com.atguigu.spring6.config;

import com.alibaba.druid.pool.DruidDataSource;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import org.springframework.transaction.annotation.EnableTransactionManagement;
import javax.sql.DataSource;

@Configuration
@ComponentScan("com.atguigu.spring6")
@EnableTransactionManagement
public class SpringConfig {

    @Bean
    public DataSource getDataSource(){
        DruidDataSource dataSource = new DruidDataSource();
        dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver");
        dataSource.setUrl("jdbc:mysql://localhost:3306/spring?characterEncoding=utf8&useSSL=false");
        dataSource.setUsername("root");
        dataSource.setPassword("root");
        return dataSource;
    }

    @Bean(name = "jdbcTemplate")
    public JdbcTemplate getJdbcTemplate(DataSource dataSource){
        JdbcTemplate jdbcTemplate = new JdbcTemplate();
        jdbcTemplate.setDataSource(dataSource);
        return jdbcTemplate;
    }

    @Bean
    public DataSourceTransactionManager getDataSourceTransactionManager(DataSource dataSource){
        DataSourceTransactionManager dataSourceTransactionManager = new DataSourceTransactionManager();
        dataSourceTransactionManager.setDataSource(dataSource);
        return dataSourceTransactionManager;
    }
}

②测试

import com.atguigu.spring6.config.SpringConfig;
import com.atguigu.spring6.controller.BookController;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.test.context.junit.jupiter.SpringJUnitConfig;

public class TxByAllAnnotationTest {

    @Test
    public void testTxAllAnnotation(){
        ApplicationContext applicationContext = new AnnotationConfigApplicationContext(SpringConfig.class);
        BookController accountService = applicationContext.getBean("bookController", BookController.class);
        accountService.buyBook(1, 1);
    }
}

标签:事务管理,Spring28,springframework,dataSource,context,org,import,public,注解
From: https://www.cnblogs.com/Ashen-/p/17102249.html

相关文章

  • Spring27 - 基于注解的事务管理
    没有事务时遇到的问题模拟场景用户购买图书,先查询图书的价格,再更新图书的库存和用户的余额假设用户id为1的用户,购买id为1的图书用户余额为50,而图书价格为80购买图书之......
  • Spring29 - 基于XML的事务管理
    基于XML的声明式事务场景模拟参考基于注解的声明式事务与注解管理事务相同的通用步骤(1)开启组件扫描<!--扫描组件--><context:component-scanbase-package="com.......
  • spring的@Param注解和mybatis中的@Param注解的区别
    1、spring中@Param(importorg.springframework.data.repository.query.Param;)intselectRoleCount(@Param("businessId")IntegerbusinessId,@Param("memberId")Lo......
  • spring注解
    Spring注解驱动文章来源:yuque.com/zuihoudewu/java_note/gwtgt9#ip308@Cofigretion(proxyBeanMethods=true) 标记在类上,告诉spring这是一个配置类首先引出两个概念:Ful......
  • shiro-从数据库中获取授权信息与显示菜单在页面上(注解版和jsp标签)
    修改realm的doGetAuthorizationInfo,从数据库查询权限信息。使用注解式授权方法。使用jsp标签授权方法。1.修改doGetAuthorizationInfo从数据库查询......
  • Springboot整合AOP和注解,实现丰富的切面功能
    简介我们在文章《SpringAOP与AspectJ的对比及应用》介绍了AOP的使用,这篇文章讲解一下AOP与注解的整合,通过注解来使用AOP,会非常方便。为了简便,我们还是来实现一个计时的功......
  • springsecurity 基于注解的方式实现不拦截某个接口
    添加忽略拦截注解@Target({ElementType.TYPE,ElementType.METHOD})@Retention(RetentionPolicy.RUNTIME)@Documentedpublic@interfaceAuthIgnore{}/***在放......
  • 688~689 Servlet生命周期的详解 AND Servlet3.0注解配置
    Servlet生命周期方法:1.被创建:执行一次init方法,只执行一次Servlet什么时候被创建默认情况下,第一次被访问时,Servlet被创建可以配置......
  • Spring22 - 基于注解的AOP
    基于注解的AOP技术说明动态代理分为JDK动态代理和cglib动态代理当目标类有接口的情况使用JDK动态代理和cglib动态代理,没有接口时只能使用cglib动态代理JDK动态代理......
  • 注解 @RequestMapping @RequestParam @RequestBody
    @RequestMapping  @RequestParam @RequestBody @PathVariable与@RequestParam的区别1)相同点A.作用位置相同:都是直接修饰方法参数变量;B.功能相似:都......