zoukankan      html  css  js  c++  java
  • Spring Boot 2.1.1.RELEASE 多数据源配置与使用

    有时候,一个系统的功能,需要两个或两个以上的数据库,

    在Spring Boot 中要如何配置? How to?

    #primary
    primary.spring.datasource.jdbc-url=jdbc:mysql://localhost:3316/test1
    primary.spring.datasource.username=root
    primary.spring.datasource.password=root
    primary.spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
    
    
    #secondary
    secondary.spring.datasource.jdbc-url=jdbc:mysql://localhost:3316/test2
    secondary.spring.datasource.username=root
    secondary.spring.datasource.password=root
    secondary.spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

    新建一个类DataSourceConfig

    @Configuration
    public class DataSourceConfig {
    
        @Bean(name = "primaryDataSource")
        @Qualifier("primaryDataSource")
        @Primary
        @ConfigurationProperties(prefix="primary.spring.datasource")
        public DataSource primaryDataSource() {
            return DataSourceBuilder.create().build();
        }
    
        @Bean(name = "secondaryDataSource")
        @Qualifier("secondaryDataSource")
        @ConfigurationProperties(prefix="secondary.spring.datasource")
        public DataSource secondaryDataSource() {
            return DataSourceBuilder.create().build();
        }
    
        @Bean(name = "primaryJdbcTemplate")
        public JdbcTemplate primaryJdbcTemplate(@Qualifier("primaryDataSource") DataSource dataSource) {
            return new JdbcTemplate(dataSource);
        }
    
        @Bean(name = "secondaryJdbcTemplate")
        public JdbcTemplate secondaryJdbcTemplate(@Qualifier("secondaryDataSource") DataSource dataSource) {
            return new JdbcTemplate(dataSource);
        }
    
    }

    之后在运用的时候,注意@Qualifier

    @RunWith(SpringJUnit4ClassRunner.class)
    @SpringBootTest
    public class ApplicationTests {
    
        @Autowired
        @Qualifier("primaryJdbcTemplate")
        protected JdbcTemplate jdbcTemplate1;
    
        @Autowired
        @Qualifier("secondaryJdbcTemplate")
        protected JdbcTemplate jdbcTemplate2;
    
        @Before
        public void setUp() {
            jdbcTemplate1.update("DELETE  FROM  USER ");
            jdbcTemplate2.update("DELETE  FROM  USER ");
        }
    
        @Test
        public void test() throws Exception {
    
            // 往第一个数据源中插入两条数据
            jdbcTemplate1.update("insert into user(id,name,age) values(?, ?, ?)", 1, "aaa", 20);
            jdbcTemplate1.update("insert into user(id,name,age) values(?, ?, ?)", 2, "bbb", 30);
    }}

    java.lang.IllegalArgumentException: jdbcUrl is required with driverClassName.

    修改application.xml中的数据库的url, 用spring.datasource.jdbc-url,而不是通常使用的spring.datasource.url。 

    之前用的如下截图,总是报错

  • 相关阅读:
    HTML5之Canvas绘图——使用Canvas绘制图形的基本教程
    搭建EF6.0+MVC4搭建框架——之路由配置
    搭建EF6.0+MVC4搭建框架遇到的问题及解决方案
    Sql2008 全文索引应用(错误7625)
    Excel 导入并导出结果集
    SqlParameter设定的value值为0时、调用的存储过程获取到的值却为null解决方法
    JavaScript中知而不全的this (转)
    JavaScript 类定义常用方法(转)
    NPOI大数据量多个sheet导出源码(原)
    网页右下角固定图片(不随滚动条滑动,始终在固定位置)
  • 原文地址:https://www.cnblogs.com/qianjinyan/p/10185067.html
Copyright © 2011-2022 走看看