1. SpringBoot如何註解事務聲明式事務
springboot的事務也主要分為兩大類,
一是xml聲明式事務,
二是註解事務,註解事務也可以實現類似聲明式事務的方法,
springboot 之 xml事務
使用 @ImportResource("classpath:transaction.xml") 引入該xml的配置
springboot 註解事務
Transactional註解事務
註:需要在進行事物管理的方法上添加註解@Transactional,或者偷懶的話直接在類上面添加該註解
註解聲明式事務
@Configuration
public class TxConfigBeanName {
@Autowired
private DataSourceTransactionManager transactionManager;
// 創建事務通知
@Bean(name = "txAdvice")
public TransactionInterceptor getAdvisor() throws Exception {
Properties properties = new Properties();
properties.setProperty("get*", "PROPAGATION_REQUIRED,-Exception,readOnly");
properties.setProperty("add*", "PROPAGATION_REQUIRED,-Exception,readOnly");
properties.setProperty("save*", "PROPAGATION_REQUIRED,-Exception,readOnly");
properties.setProperty("update*", "PROPAGATION_REQUIRED,-Exception,readOnly");
properties.setProperty("delete*", "PROPAGATION_REQUIRED,-Exception,readOnly");
TransactionInterceptor tsi = new TransactionInterceptor(transactionManager,properties);
return tsi;
}
@Bean
public BeanNameAutoProxyCreator txProxy() {
BeanNameAutoProxyCreator creator = new BeanNameAutoProxyCreator();
creator.setInterceptorNames("txAdvice");
creator.setBeanNames("*Service", "*ServiceImpl");
creator.setProxyTargetClass(true);
return creator;
}
}
2. Spring的聲明式事務處理怎麼配置,可以在提交事務後關閉資料庫連接
try {
conn = u.getConnection();//連接資料庫
//業務層的處理方法的調用。。。。。。
u.commit(conn);//提交
} catch (Exception e) {
u.rollback(conn);
} finally {
u.close(conn);//關閉
}