spring中手动调用事务
@Test
public void test1(){
ApplicationContext context = new AnnotationConfigApplicationContext(AppConfig.class);
JdbcTemplate jdbcTemplate = context.getBean("jdbcTemplate", JdbcTemplate.class);
//声明事务管理器
DataSourceTransactionManager transactionManager = new DataSourceTransactionManager(jdbcTemplate.getDataSource());
//定义事务特性
DefaultTransactionDefinition transactionDefinition = new DefaultTransactionDefinition();
//设置事务传播属性
transactionDefinition.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED);
//获取事务 开启事务
TransactionStatus status = transactionManager.getTransaction(transactionDefinition);
//插入数据
int rs =jdbcTemplate.update("insert into user1 values (?,?)",1,"admin");
//事务回滚
//transactionManager.rollback(status);
//事务提交
transactionManager.commit(status);
System.out.println("...end");
}
spring中使用IOC容器调用事务
@Test
public void test2(){
ApplicationContext context = new AnnotationConfigApplicationContext(AppConfig.class);
JdbcTemplate jdbcTemplate = context.getBean("jdbcTemplate", JdbcTemplate.class);
//声明事务管理器
DataSourceTransactionManager transactionManager =context.getBean("transactionManager",DataSourceTransactionManager.class);
//定义事务特性
DefaultTransactionDefinition transactionDefinition = new DefaultTransactionDefinition();
//设置事务传播属性
transactionDefinition.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED);
//获取事务 开启事务
TransactionStatus status = transactionManager.getTransaction(transactionDefinition);
//插入数据
int rs =jdbcTemplate.update("insert into user1 values (?,?)",2,"admin123");
//事务回滚
//transactionManager.rollback(status);
//事务提交
transactionManager.commit(status);
System.out.println("...end");
}
事物的模板比较固定 需要操作的只是后面的代码
其中的AppConfig文件为jdbcTemplate的配置类
AppConfig配置类
@Configuration//将当前类声明为配置类
@PropertySource("db.properties")//指定配置文件位置
public class AppConfig {
@Value("${db.username}")
String username;
@Value("${db.password}")
String password;
@Value("${db.url}")
String url;
@Value("${db.DriverClassName}")
String driverClassName;
/**
* dataSource数据源
*/
@Bean
public DataSource dataSource(){
DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setUsername(username);
dataSource.setPassword(password);
dataSource.setUrl(url);
dataSource.setDriverClassName(driverClassName);
return dataSource;
}
/**
* 向IOC容器中注入jdbcTemple
*/
@Bean
public JdbcTemplate jdbcTemplate(DataSource dataSource){
JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
return jdbcTemplate;
}
}