我把我的头发分开了 jdbcTemplate
进入一个 readerJdbcTemplate
和一个 writerJdbcTemplate
,因此前者可以直接对读取副本进行查询。
应用程序运行良好,只有一个 jdbcTemplate
,但自从把它们分开后,我现在在启动时得到了这个:
org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'org.springframework.transaction.TransactionManager' available\n\tat org.springframework.beans.factory.support.DefaultListableBeanFactory.getBean(DefaultListableBeanFactory.java:352)\n\tat org.springframework.beans.factory.support.DefaultListableBeanFactory.getBean(DefaultListableBeanFactory.java:343)\n\tat org.springframework.transaction.interceptor.TransactionAspectSupport.determineTransactionManager(TransactionAspectSupport.java:482)\n\tat org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:336)\n\tat org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:118)\n\tat org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)\n\tat org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:749)\n\tat org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:691)
我确实有 spring-tx
在我的pom里,所以 TransactionManager
应该是可用的。
这是我的数据库配置
@Configuration
@EnableTransactionManagement
@Slf4j
public class DbConfig {
@Profile("!local")
@Bean
public DataSource writerDataSource() {
// snip
return new HikariDataSource();
}
@Profile("!local")
@Bean
public DataSource readerDataSource() {
// snip
return new HikariDataSource();
}
@Bean
public JdbcTemplate writerJdbcTemplate(DataSource writerDataSource) {
return new JdbcTemplate(writerDataSource);
}
@Bean
public JdbcTemplate readerJdbcTemplate(DataSource readerDataSource) {
return new JdbcTemplate(readerDataSource);
}
}
为什么是 TransactionManager
现在我有2个 jdbcTemplate
? 为什么找不到呢?缺少配置?
谢谢
暂无答案!
目前还没有任何答案,快来回答吧!