Discuss / Java / 关于声明式事务,有个点老师没有强调

关于声明式事务,有个点老师没有强调

Topic source

编程式事务

首先,与声明式事务相对应的是编程式事务,人为用手动去实现实现的开启与回滚等操作,这些逻辑耦合在代码中。

public class UserService {
    @Autowire
    PlatformTransactionManager txManager;

    public User register(User user) {
        tyr {
            tx = txManager.getTransaction();
            // 业务代码
            txManager.commit(tx);
        } catch (RuntimeException e) {
            txManager.rollback(tx);
            throw e;
        }
    }
}

声明式事务

仅仅使用注解去解决事务,代码中不体现,十分的简洁,当然也隐藏事务的传播属性诸多细节。

@Component
public class UserService {
    @Transaction
    public User register(User user) {
        //业务代码
    }
}

全局PlatformTransactionManager来源

在作业中是位于AppConfig.java中的,人为手工注册的Bean。

	@Bean
	PlatformTransactionManager createTxManager(@Autowired DataSource dataSource) {
		return new DataSourceTransactionManager(dataSource);
	}

  • 1

Reply