spring注解 声明式事务

       在spring注解中,使用声明式事务,需要用到两个核心的注解:@Transactional注解和@EnableTransactionManagement注解。将@Transactional注解加在方法上,@EnableTransactionManagement注解加在配置类上,除此之外,还有一个核心要点是,向容器中注册PlatformTransactionManager组件,用于进行事务的管理。

       @EnableTransactionManagement注解表明开启基于注解的事务管理机制,@Transactional注解标注的方法表明该方法将由事务管理器进行管理,PlatformTransactionManager组件管理这些事务。

@EnableTransactionManagement
@ComponentScan("me.xf.tx")
@Configuration
public class MyConfig8Tx {

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

    @Bean
    public JdbcTemplate jdbcTemplate(DataSource dataSource){    //参数是从容器中获取的
        JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
        return jdbcTemplate;
    }

    //事务管理器
    @Bean
    public PlatformTransactionManager platformTransactionManager() throws PropertyVetoException {
        return new DataSourceTransactionManager(dataSource());
    }
}

...

    @Transactional
    public void insert(){
        userDao.insert();
        System.out.println("插入完成!");
        int i = 1/0;
    }

 

你可能感兴趣的:(spring注解)