Spring - 注解驱动开发四纯注解实现声明式事务(无xml)

原创 2018年04月15日 19:06:54

配置类如下:

@EnableTransactionManagement
@ComponentScan("com.web.tx")
@Configuration
public class TxConfig {

    //数据源
    @Bean
    public DataSource dataSource() throws Exception{
        ComboPooledDataSource dataSource = new ComboPooledDataSource();
        dataSource.setUser("root");
        dataSource.setPassword("123456");
        dataSource.setDriverClass("com.mysql.jdbc.Driver");
        dataSource.setJdbcUrl("jdbc:mysql://localhost:3306/test");
        return dataSource;
    }

    //
    @Bean
    public JdbcTemplate jdbcTemplate() throws Exception{
        //Spring对@Configuration类会特殊处理;给容器中加组件的方法,多次调用都只是从容器中找组件
        JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource());
        return jdbcTemplate;
    }

    //注册事务管理器在容器中
    @Bean
    public PlatformTransactionManager transactionManager() throws Exception{
        return new DataSourceTransactionManager(dataSource());
    }
}

@EnableTransactionManagement注解功能:开启基于注解的事务管理功能。

等同于以前xml配置:

<tx:annotation-driven/>

另外需要注意注册事务管理器bean于Spring容器中。


UserDao如下:

@Repository
public class UserDao {

    @Autowired
    private JdbcTemplate jdbcTemplate;
    public void insert(){
        String sql = "INSERT INTO `tbl_user`(username,age) VALUES(?,?)";
        String username = UUID.randomUUID().toString().substring(0, 5);
        jdbcTemplate.update(sql, username,19);
    }

}

UserService如下:

@Service
public class UserService2 {

    @Autowired
    private UserDao userDao;

    @Transactional
    public void insertUser(){
        userDao.insert();
        //otherDao.other();xxx
        System.out.println("插入完成...");
        int i = 10/0;//这里人为抛出异常,测试事务
    }

}

测试类如下:

public class IOCTest_Tx {

    @Test
    public void test01(){
        AnnotationConfigApplicationContext applicationContext = 
                new AnnotationConfigApplicationContext(TxConfig.class);

        UserService2 userService = applicationContext.getBean(UserService2.class);

        userService.insertUser();
        applicationContext.close();
    }

}

综上,可以看到将数据源,事务管理器等以前xml配置的方式替换为注解形式,可以实现完全无xml的声明式事务。

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/J080624/article/details/79951957

Spring注解驱动开发

《Spring注解驱动开发》是一套帮助我们深入了解Spring原理机制的教程; 现今SpringBoot、SpringCloud技术非常火热,作为Spring之上的框架,他们大量使用到了Spring的一些底层注解、原理,比如@Conditional、@Import、@EnableXXX等。如果掌握这些底层原理、注解,那么我们对这些高层框架就能做到高度定制,使用的游刃有余;
  • 2018年03月28日 14:12

Spring+MyBatis纯注解零XML整合

不得不说,利用XML作为配置文件是一个非常好的想法,它可以轻松地实现配置集中化,而且修改之后无需再次编译。然而,由于大多数情况下开发者基本都会拿到程序的源码,加之对于各种XML配置文件一般情况下也只有...
  • u014527058
  • u014527058
  • 2017-07-25 21:28:33
  • 1192

Spring声明式事务管理的两种方式(XML和Annotation)

Spring声明式事务管理
  • u012744159
  • u012744159
  • 2016-03-10 17:15:05
  • 1241

事务管理及spring基于注解的声明式事务管理的配置和用法

因为前几天看一个项目文档出现“本系统采用基于Spring的声明式事务控制”,才根据文档和代码了解了一下事务管理的相关知识。这里对自己的学习做个总结。 一:相关概念 1.事务:事务是一系列的动作,它...
  • guozili1
  • guozili1
  • 2017-02-09 14:01:44
  • 1506

Spring声明式事务管理(XML与注解方式)

事务控制概述编程式事务控制自己手动控制事务,就叫做编程式事务控制。 Jdbc代码: Conn.setAutoCommite(false); // 设置手动控制事务 Hibernate代码: ...
  • scgaliguodong123_
  • scgaliguodong123_
  • 2015-11-16 17:40:00
  • 3140

spring 声明式事务管理注解方式实现

使用注解实现Spring的声明式事务管理,更加简单! 步骤:          1) 必须引入Aop相关的jar文件          2) bean.xml中指定注解方式实现声明式事务管理以及应用的...
  • u014010769
  • u014010769
  • 2015-07-31 20:09:20
  • 2012

Spring4 Web MVC纯注解启动,无web.xml

基于Spring4新特性,尝试了一下纯注解启动MVC 主要类如下图: RootConfig: /** * RootConfig * @author zoe * */ ...
  • hj7jay
  • hj7jay
  • 2017-01-03 10:03:05
  • 3395

spring通过注解实现声明式事务控制

第一步:声明使用注解并制定事务管理器 第二步:引入properties文件 config.properties: dbhost=xxxxxx...
  • kollyQAQ
  • kollyQAQ
  • 2016-04-26 12:31:13
  • 1483

从无到有(一)----无web.xml全注解SpringMVC框架搭建

1.配置结构2.RootConfig(application-context.xml)package com.ahu.gd.crms.config; import com.ahu.gd.crms.ut...
  • flushest
  • flushest
  • 2017-03-27 09:22:11
  • 1103

Spring4Mvc纯注解启动,无web.xml

科技优家 2016-12-31 20:12 基于Spring4新特性,尝试了一下纯注解启动Mvc 主要类如下图: RootConfig: /** * RootConfig * @aut...
  • u011277123
  • u011277123
  • 2017-01-03 09:11:52
  • 1080
收藏助手
不良信息举报
您举报文章:Spring - 注解驱动开发四纯注解实现声明式事务(无xml)
举报原因:
原因补充:

(最多只允许输入30个字)