动态数据源有什么意义?

在 Spring 的基础上搞个动态数据源,加一个 @Dynamic 之类的 annotation 切换数据源有什么意义?比起直接使用 @Transactional 注解又有什么不同呢?

下面是 Spring 利用 @Transactional 实现的伪代码,与动态数据源有什么区别吗?或者动态数据源还做了哪些额外的事情?

@Bean
public TransactionManager tx1() {
    return new TransactionManager(dataSource-1111);
}

@Bean
public TransactionManager tx2() {
    return new TransactionManager(dataSource-2222);
}
@Transactional(transactionMnager="tx1")
public void m1() {
}

@Transactional(transactionMnager="tx2")
public void m1() {
}
阅读 1.3k
1 个回答

TransactionManager 顾名思义是一个事务管理器,可以理解成它是在你指定的dataSource外包裹了一个事务处理逻辑,添加@Transactional注解后的业务方法都会被事务包围,大多数业务都是查询为主,走事务会极大损失性能,而题主你通过两个事务管理器 在业务方法上指定不同的数据源,这只是spring的事务管理器的副作用。

两者是不同的东西

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题