域名服务商网站/免费建站平台
在spring注解中,使用声明式事务,需要用到两个核心的注解:@Transactional注解和@EnableTransactionManagement注解。将@Transactional注解加在方法上,@EnableTransactionManagement注解加在配置类上,除此之外,还有一个核心要点是,向容器中注册PlatformTransactionManager组件,用于进行事务的管理。
@EnableTransactionManagement注解表明开启基于注解的事务管理机制,@Transactional注解标注的方法表明该方法将由事务管理器进行管理,PlatformTransactionManager组件管理这些事务。
@EnableTransactionManagement
@ComponentScan("me.xf.tx")
@Configuration
public class MyConfig8Tx {//数据源@Beanpublic 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;}@Beanpublic JdbcTemplate jdbcTemplate(DataSource dataSource){ //参数是从容器中获取的JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);return jdbcTemplate;}//事务管理器@Beanpublic PlatformTransactionManager platformTransactionManager() throws PropertyVetoException {return new DataSourceTransactionManager(dataSource());}
}...@Transactionalpublic void insert(){userDao.insert();System.out.println("插入完成!");int i = 1/0;}