美文网首页数据库
Springboot配置多数据源

Springboot配置多数据源

作者: js_hz | 来源:发表于2020-05-09 22:02 被阅读0次

    开发经常遇到需要配置多个数据源的情况,比如:使用多个host或多种数据库MySql/Oracle/SqlServer情况,使用springboot可以如下配置:

    配置文件 application.properties

    spring.datasource.test1.mysql.jdbc-url =jdbc:mysql://localhost:3306/test1?useUnicode=true&characterEncoding=utf-8&useSSL=false&allowMultiQueries=true
    spring.datasource.test1.mysql.username = root
    spring.datasource.test1.mysql.password = 123456
    spring.datasource.test1.mysql.driver-class-Name = com.mysql.jdbc.Driver
    
    spring.datasource.test2.mysql.jdbc-url =jdbc:mysql://localhost:3306/test2?useUnicode=true&characterEncoding=utf-8&useSSL=false&allowMultiQueries=true
    spring.datasource.test2.mysql.username = root
    spring.datasource.test2.mysql.password = 1314
    spring.datasource.test2.mysql.driver-class-Name = com.mysql.jdbc.Driver
    

    Springboot配置

    import org.springframework.beans.factory.annotation.Qualifier;
    import org.springframework.boot.context.properties.ConfigurationProperties;
    import org.springframework.boot.jdbc.DataSourceBuilder;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.context.annotation.Primary;
    import org.springframework.jdbc.core.JdbcTemplate;
    
    import javax.sql.DataSource;
    
    @Configuration
    public class DataSourceConfig {
    
        @Bean(name = "test1DataSource")
        @Primary
        @ConfigurationProperties(prefix="spring.datasource.test1.mysql")
        public DataSource testDataSource() {
            return DataSourceBuilder.create().build();
        }
    
        @Bean(name = "test2DataSource")
        @ConfigurationProperties(prefix = "spring.datasource.test2.mysql")
        public DataSource formalDataSource() {
            return DataSourceBuilder.create().build();
        }
    
        @Bean(name="test1JdbcTemplate")
        public JdbcTemplate test1JdbcTemplate (
                @Qualifier("test1DataSource")  DataSource testDataSource ) {
            return new JdbcTemplate(testDataSource);
        }
    
        @Bean(name = "test2JdbcTemplate")
        public JdbcTemplate formalJdbcTemplate(
                @Qualifier("test2DataSource") DataSource formalDataSource){
            return new JdbcTemplate(formalDataSource);
        }
        
    }
    

    注意事项

    @Qualifier注解 限定描述符能根据名字进行注入。
    @Primary注解 自动装配时当出现多个Bean候选者时,被注解为@Primary的Bean将作为首选者。
    @Primary注解 只能用于其中一个DataSource。
    实际使用时可能还会多mybatis等相关配置,但是原理一样。 这是比较简洁的配置方式,其它方式还有AOP等。

    来源:https://www.oxingsoft.com/blog/article/6.html

    相关文章

      网友评论

        本文标题:Springboot配置多数据源

        本文链接:https://www.haomeiwen.com/subject/nqzlnhtx.html