1. 程式人生 > >spring boot基於註解的宣告式事務配置

spring boot基於註解的宣告式事務配置

spring boot基於註解的宣告式事務配置

事務配置

1、配置方式一
1)開啟spring事務管理,在spring boot啟動類添加註解@EnableTransactionManagement(proxyTargetClass = true);等同於xml配置方式的 <tx:annotation-driven />(注意:1專案中只需配置一次,2需要配置proxyTargetClass = true)
2)在專案中需要新增事務的類或方法上添加註解@Transactional(建議新增在方法上),一般使用預設屬性即可,若要使用事務各屬性可檢視spring事務官方文件瞭解

2、配置方式二(指定事務,需要多個事務管理器時用
1)開啟事務管理:建立多個事務,如下例子

@Configuration
@EnableTransactionManagement(proxyTargetClass = true)
public class TransactionConfig implements TransactionManagementConfigurer{

    @Value("${spring.datasource.driver-class-name}")
    private String driverClassName;

    @Value("${spring.datasource.druid.url}"
) private String url; @Value("${spring.datasource.druid.username}") private String username; @Value("${spring.datasource.druid.password}") private String password; @Bean public DataSource dataSourceDb() { DruidDataSource dataSource = new DruidDataSource(); dataSource.setDriverClassName(driverClassName); dataSource.setUrl(url); dataSource.setUsername(username); dataSource.setPassword(password); return
dataSource; } /** * 【作用】事務管理器<br> * 【說明】(無) * @param * @author Kalvin * @Date 2017/12/19 10:39 */ @Bean public PlatformTransactionManager transactionManager() { return new DataSourceTransactionManager(dataSourceDb()); } // 建立事務管理器2 @Bean(name = "txManager2") public PlatformTransactionManager txManager2(EntityManagerFactory factory) { return new JpaTransactionManager(factory); } /** * 【作用】如果沒有指定事務,預設返回當前事務管理<br> * 【說明】(無) * @param * @author kkyc * @Date 2017/12/19 10:03 */ @Override public PlatformTransactionManager annotationDrivenTransactionManager() { return transactionManager(); } }

到這裡已經成功整合好事務配置了,你只需要在使用的地方添加註解@Transactional即可,如果需要限定事務管理器,可使用@Transactional(“txManager2”)