从小我就黑 2019-03-11 15:58 采纳率: 75%
浏览 2406
已采纳

sprongboot配置双数据源问题

springboot 要配置一个mysql数据库一个sqlserver数据库 下面是我的配置

spring:
  datasource:
    master:
      driver-class-name: com.mysql.jdbc.Driver
      jdbc-url: jdbc:mysql://***************************/gac?useUnicode=true&characterEncoding=UTF-8
      username: ****
      password: ****
    other:
      driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
      jdbc-url: jdbc:sqlserver://***********************
      username: ****
      password: ****
  session:
    store-type: redis
  redis:
    host: ****
    port: ****

主数据库配置

@Primary
    @Bean(name = "masterDataSource")
    @ConfigurationProperties(prefix = "spring.datasource.master")
    public DataSource dataSource() {
        return DataSourceBuilder.create().build();
    }

    @Primary
    @Bean(name = "masterSqlSessionFactory")
    public SqlSessionFactory sqlSessionFactory(@Qualifier("masterDataSource") DataSource dataSource) throws Exception {
        SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean();
        factoryBean.setDataSource(dataSource);
        factoryBean.setTypeAliasesPackage("com.gac.entity");
        factoryBean.setMapperLocations(
                new PathMatchingResourcePatternResolver().getResources("classpath:mapper/*.xml"));
        return factoryBean.getObject();
    }

    @Primary
    @Bean(name = "masterTransactionManager")
    public DataSourceTransactionManager transactionManager(@Qualifier("masterDataSource") DataSource dataSource) {
        return new DataSourceTransactionManager(dataSource);
    }

    @Primary
    @Bean(name = "masterSqlSessionTemplate")
    public SqlSessionTemplate testSqlSessionTemplate(
            @Qualifier("masterSqlSessionFactory") SqlSessionFactory sqlSessionFactory) throws Exception {
        return new SqlSessionTemplate(sqlSessionFactory);
    }

第二个数据库配置

@Bean(name = "otherDataSource")
    @ConfigurationProperties(prefix = "spring.datasource.other")
    public DataSource dataSource() {
        return DataSourceBuilder.create().build();
    }

    @Bean(name = "otherTransactionManager")
    public DataSourceTransactionManager transactionManager(@Qualifier("otherDataSource") DataSource dataSource) {
        return new DataSourceTransactionManager(dataSource);

    }

    @Bean(name = "otherSqlSessionFactory")
    public SqlSessionFactory basicSqlSessionFactory(@Qualifier("otherDataSource") DataSource basicDataSource) throws Exception {
        SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean();
        factoryBean.setDataSource(basicDataSource);
        factoryBean.setMapperLocations(
                new PathMatchingResourcePatternResolver().getResources("classpath:other/*.xml"));
        return factoryBean.getObject();
    }

    @Bean(name = "otherSqlSessionTemplate")
    public SqlSessionTemplate testSqlSessionTemplate(
            @Qualifier("otherSqlSessionFactory") SqlSessionFactory sqlSessionFactory) throws Exception {
        return new SqlSessionTemplate(sqlSessionFactory);
    }

启动类配置

@Configuration
@EnableTransactionManagement
@SpringBootApplication(exclude={
        DataSourceAutoConfiguration.class,
        //        HibernateJpaAutoConfiguration.class, //(如果使用Hibernate时,需要加)  
        DataSourceTransactionManagerAutoConfiguration.class,
        })

@Import({InitServiceConfiguration.class, InitConfiguration.class})
@ComponentScan("com.gac")
public class adminApiApplication {

    public static void main(String[] args) {
        SpringApplication.run(adminApiApplication.class, args);
    }
}

报错

Caused by: org.springframework.beans.factory.NoUniqueBeanDefinitionException: No qualifying bean of type 'javax.sql.DataSource' available: more than one 'primary' bean found among candidates: [masterDataSource, otherDataSource, dataSource]

已经在主配置里面加了@Primary 然后在启动类里面也加了(exclude={
DataSourceAutoConfiguration.class,
//        HibernateJpaAutoConfiguration.class, //(如果使用Hibernate时,需要加)  
DataSourceTransactionManagerAutoConfiguration.class,
})
为什么还会报多数据源问题? 麻烦哪位大佬帮帮看一下问题 谢谢

  • 写回答

2条回答 默认 最新

  • 从小我就黑 2019-03-11 20:59
    关注

    已经自己解决掉了 我会发出博客的 有需要的盗取看一下我的博客

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 Jenkins+k8s部署slave节点offline
  • ¥15 微信小游戏反编译后,出现找不到分包的情况
  • ¥15 如何实现从tello无人机上获取实时传输的视频流,然后将获取的视频通过yolov5进行检测
  • ¥15 WPF使用Canvas绘制矢量图问题
  • ¥15 用三极管设计一个单管共射放大电路
  • ¥15 孟德尔随机化r语言运行问题
  • ¥15 pyinstaller编译的时候出现No module named 'imp'
  • ¥15 nirs_kit中打码怎么看(打码文件是csv格式)
  • ¥15 怎么把多于硬盘空间放到根目录下
  • ¥15 Matlab问题解答有两个问题