声明式事务

作者: 超速蜗牛1984 | 来源:发表于2019-08-28 17:08 被阅读0次

步骤

 * 环境搭建:
 * 1、导入相关依赖
 *      数据源、数据库驱动、Spring-jdbc模块
 *
 * 2、配置数据源、JdbcTemplate(Spring提供的简化数据库操作的工具)数据操作
 * 3、 @Transactional表示当前方法为事务方法
 * 4、 @EnableTransactionManagement开启事务管理功能
 * 5、 配置事务管理器来管理事务

配置类

@EnableTransactionManagement
@ComponentScan("com.dwd.snail.testspring.test.tx")
@Configuration
public class TxConfig {
    @Bean
    public DataSource dataSource() throws PropertyVetoException {
         ComboPooledDataSource dataSource=new ComboPooledDataSource();
         dataSource.setUser("root");
         dataSource.setPassword("123456");
         dataSource.setDriverClass("com.mysql.jdbc.Driver");
         dataSource.setJdbcUrl("jdbc:mysql://localhost:3306/snailtest?characterEncoding=utf8");
         return dataSource;
    }
    @Bean
    public JdbcTemplate jdbcTemplate() throws PropertyVetoException {
        JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource());
        return jdbcTemplate;
    }
    //一定要注册事务管理器在容器中
    @Bean
    public PlatformTransactionManager platformTransactionManager() throws PropertyVetoException {
        return new DataSourceTransactionManager(dataSource());
    }
}

service

@Service
public class UserService {
    @Autowired
    private UserDao userDao;
    @Transactional
    public void insertUser(){
        userDao.insert();
        System.out.println("======================插入成功===========================");
        int i=10/0;
    }
}

Dao

@Repository
public class UserDao {
    @Autowired
    private JdbcTemplate jdbcTemplate;
    public void insert(){

        String sql="INSERT INTO student_info (name,nickname,age) VALUES (?,?,?)";
        String randomstr=UUID.randomUUID().toString().substring(0,2);
        String name="黄"+ randomstr;
        String nickname="蜗牛"+ randomstr;
        int x=(int)(Math.random()*100);
        jdbcTemplate.update(sql,name,nickname,x);
    }

}

test

public class IocTest_tx {
    AnnotationConfigApplicationContext applicationContext=new AnnotationConfigApplicationContext(TxConfig.class);
    @Test
    public void test01(){
//        printBeans(applicationContext);
//        applicationContext.close();
        UserService userService = applicationContext.getBean(UserService.class);
        userService.insertUser();
        applicationContext.close();


    }

//    private void printBeans(AnnotationConfigApplicationContext applicationContext){
//        String[] names=applicationContext.getBeanDefinitionNames();
//        for (String name:names){
//            System.out.println(name);
//            System.out.println(applicationContext.getBean(name));
//        }
//    }
}

相关文章

  • spring事务(二) 声明式事务

    spring事务(二) 声明式事务 知识导读 声明式事务是对编程式事务的包装 声明式事务通过使用AOP来实现,注册...

  • Spring的事务传播行为

    前言 Spring同时支持编程事务策略和声明式事务策略,通常都推荐采用声明式事务策略。使用声明式事务策略的优势十分...

  • Spring的事务机制解析一

    一Spring事务的种类 1.声明式事务 2.编程式事务 二Spring事务的具体描述 (一)声明式事务 1.声明...

  • Spring事务——使用TransactionProxyFact

    Spring同时支持编程式事务策略和声明式事务策略,大部分时候,我们都推荐采用声明式事务策略。使用声明式事务策略的...

  • spring04

    Spring JdbcTemplate学习 Spring 声明式事务 xml配置实现 Spring 声明式事务 注...

  • Spring事务

    基础概念 ​ Spring中事务支持编程式事务和声明式事务。编程式事务由使用者自行编码控制事务;声明式事务则是...

  • 声明式事务

    编程式事务:由程序员编程事务控制代码声明式事务:事务控制代码已由Spring写好,程序员只需声明出哪些方法需要进行...

  • 声明式事务

    步骤 配置类 service Dao test

  • 声明式事务

    编程式事务:1.1 由程序员编程事务控制代码.1.2 OpenSessionInView 编程式事务 声明式事务:...

  • 声明式事务

    管理建立在AOP之上的。其本质是对方法前后进行拦截,然后在目标方法开始之前创建或者加入一个事务,在执行完目标方法之...

网友评论

    本文标题:声明式事务

    本文链接:https://www.haomeiwen.com/subject/niemectx.html