代码之家  ›  专栏  ›  技术社区  ›  Vishal Monga

如何在spring boot中使用2个或更多jdbcTemplate?

  •  1
  • Vishal Monga  · 技术社区  · 6 年前

    我想在使用应用程序的项目中使用2个或更多jdbcTemplate。属性。我尝试了一下,但遇到了运行时异常。

    ##########我的申请。属性:-
         spring.datasource.driver-class-name=com.mysql.jdbc.Driver
         spring.datasource.url=jdbc:mysql://localhost:3306/ccm_new
         spring.datasource.username=test
         spring.datasource.password=test
    
          spring.oracledatasource.url=jdbc:oracle:thin:@localhost:1521:mastera
       spring.oracledatasource.password=test
       spring.oracledatasource.username=test
       spring.oracledatasource.driver-class-name=oracle.jdbc.driver.OracleDriver
    
         @Bean(name = "dsMaster") ############
         @Primary
         @ConfigurationProperties(prefix="spring.oracledatasource")
         public DataSource primaryDataSource() {
         return DataSourceBuilder.create().build();
        }
    
          @Bean(name = "jdbcMaster") #############
            public JdbcTemplate masterJdbcTemplate(@Qualifier("dsMaster") DataSource dsMaster)
               {
           return new JdbcTemplate(dsMaster);
          }
    
    ################我通常使用mysql连接,但在使用oracle连接时

    组织。springframework。jdbc。CannotGetJdbcConnectionException:获取JDBC连接失败;嵌套异常为java。sql。SQLException:无法为连接URL“null”创建类“”的JDBC驱动程序 位于组织。springframework。jdbc。数据源。数据源工具。getConnection(DataSourceUtils.java:81) 位于组织。springframework。jdbc。果心JdbcTemplate。执行(JdbcTemplate.java:371) 位于组织。springframework。jdbc。果心JdbcTemplate。查询(JdbcTemplate.java:446) 位于组织。springframework。jdbc。果心JdbcTemplate。查询(JdbcTemplate.java:456) 在 enter code here

    2 回复  |  直到 6 年前
        1
  •  3
  •   Vishal Monga    6 年前

    我错了,我想通过应用程序建立mysql连接。没有@bean配置的属性。如果要建立2个或更多连接,只需使用其@ConfigurationProperties(prefix=“spring.mysqldatasource”)不同于“spring.datasource”的prifix来定义所有数据源。prifix“spring.datasource”仅在需要从一个数据库建立连接时使用。下面是最后一个工作代码示例:-

    应用属性

     spring.mysqldatasource.driver-class-name=com.mysql.jdbc.Driver
     spring.mysqldatasource.url=jdbc:mysql://localhost:3306/ccm_new
     spring.mysqldatasource.username=test
     spring.mysqldatasource.password=test
     spring.mysqldatasource.dbcp2.initial-size=5
     spring.mysqldatasource.dbcp2.max-total=15
     spring.mysqldatasource.dbcp2.pool-prepared-statements=true
    
    
    
    spring.oracledatasource.url=jdbc:oracle:thin:@localhost:1521:mastera
    spring.oracledatasource.password=test
    spring.oracledatasource.username=test
    spring.oracledatasource.driver-class-name=oracle.jdbc.driver.OracleDriver
    spring.oracledatasource.dbcp2.initial-size=5
    spring.oracledatasource.dbcp2.max-total=15
    spring.oracledatasource.dbcp2.pool-prepared-statements=true
    
    
    
     @Configuration
     public class PrototypeUtility {
     @Bean(name = "dsMaster")
    @Primary
    @ConfigurationProperties(prefix="spring.oracledatasource")
    public DataSource primaryDataSource() {
        return DataSourceBuilder.create().build();
    }
    @Bean(name = "jdbcMaster")
    public JdbcTemplate masterJdbcTemplate(@Qualifier("dsMaster") DataSource dsMaster) {
          return new JdbcTemplate(dsMaster);
    }
    
    @Bean(name = "dsMasterMysql")
    @ConfigurationProperties(prefix="spring.mysqldatasource")
    public DataSource primaryDataSourceMysql() {
        return DataSourceBuilder.create().build();
    }
    @Bean(name = "jdbcMasterMysql")
    public JdbcTemplate masterMysqlJdbcTemplate(@Qualifier("dsMasterMysql") DataSource dsMasterMysql) {
          return new JdbcTemplate(dsMasterMysql);
    }
      }
    

    然后我自动连接了两个连接:-

         @Autowired
          private JdbcTemplate jdbcMasterMysql;
    
         @Autowired
         public JdbcTemplate jdbcMaster;
    

    此代码已为我成功运行。 如果有人有疑问,请毫不犹豫地询问。

        2
  •  1
  •   Himanshu itmca    6 年前

    我错了,我想通过应用程序建立mysql连接。没有@bean配置的属性。如果要建立2个或更多连接,只需使用其@ConfigurationProperties(prefix=“spring.mysqldatasource”)不同于“spring.datasource”的prifix来定义所有数据源。prifix“spring.datasource”仅在需要从一个数据库建立连接时使用。下面是最后一个工作代码示例:-

    应用属性

    spring.mysqldatasource.driver-class-name=com.mysql.jdbc.Driver
     spring.mysqldatasource.url=jdbc:mysql://localhost:3306/ccm_new
     spring.mysqldatasource.username=test
     spring.mysqldatasource.password=test
     spring.mysqldatasource.dbcp2.initial-size=5
     spring.mysqldatasource.dbcp2.max-total=15
     spring.mysqldatasource.dbcp2.pool-prepared-statements=true
    
    
    
    spring.oracledatasource.url=jdbc:oracle:thin:@localhost:1521:mastera
    spring.oracledatasource.password=test
    spring.oracledatasource.username=test
    spring.oracledatasource.driver-class-name=oracle.jdbc.driver.OracleDriver
    spring.oracledatasource.dbcp2.initial-size=5
    spring.oracledatasource.dbcp2.max-total=15
    spring.oracledatasource.dbcp2.pool-prepared-statements=true
    
    
    
     @Configuration
     public class PrototypeUtility {
     @Bean(name = "dsMaster")
    @Primary
    @ConfigurationProperties(prefix="spring.oracledatasource")
    public DataSource primaryDataSource() {
        return DataSourceBuilder.create().build();
    }
    @Bean(name = "jdbcMaster")
    public JdbcTemplate masterJdbcTemplate(@Qualifier("dsMaster") DataSource dsMaster) {
          return new JdbcTemplate(dsMaster);
    }
    
    @Bean(name = "dsMasterMysql")
    @ConfigurationProperties(prefix="spring.mysqldatasource")
    public DataSource primaryDataSourceMysql() {
        return DataSourceBuilder.create().build();
    }
    @Bean(name = "jdbcMasterMysql")
    public JdbcTemplate masterMysqlJdbcTemplate(@Qualifier("dsMasterMysql") DataSource dsMasterMysql) {
          return new JdbcTemplate(dsMasterMysql);
    }
      }