• SpringBoot 配置多数据源


    SpringBoot 配置多数据源

    yml配置

    spring: 
      datasource:
        # MySQL  java的new Date()时间插入数据库时差差8个小时问题  GMT%2b8
        # driver-class-name: com.mysql.jdbc.Driver #com.mysql.jdbc.Driver和mysql-connector-java 5一起用。
        iron:
          driver-class-name: com.mysql.cj.jdbc.Driver #com.mysql.cj.jdbc.Driver和mysql-connector-java 6 一起用。
          url: jdbc:mysql://192.168.0.10:3306/iron_test?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL
          username: root
          password: 123
          validation-query: select 'x' #用来检测连接是否有效的sql 必须是一个查询语句( mysql中为 select 'x'  oracle中为 select 1 from dual)
          mapper-locations: classpath*:mapper/*.xml    #将MyBatis Mapper xml 放到 jar 包外面,发布时改成 file:mapper/*.xml
    
        his:
          #Oracle
          driver-class-name: oracle.jdbc.driver.OracleDriver
          url: jdbc:oracle:thin:@192.168.0.11:1521/iron_s #jdbc:oracle:thin:@//<host>:<port>/<SERVICE_NAME>  dbc:oracle:thin:@<host>:<port>:<SID>
          username: iron
          password: 123
          validation-query: select 1 from dual #用来检测连接是否有效的sql 必须是一个查询语句( mysql中为 select 'x'  oracle中为 select 1 from dual)
          mapper-locations: classpath*:mapper/hospital/*.xml    #将MyBatis Mapper xml 放到 jar 包外面,发布时改成 file:mapper/hospital/*.xml
    
     
    #    SQL SERVER 数据源基本配置
    #    driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
    #    url: jdbc:sqlserver://192.168.0.12:1433;DatabaseName=irondb
    #    username: sa
    #    password: 123

    IronDruidConfig

    import com.alibaba.druid.pool.DruidDataSource;
    import com.alibaba.druid.support.http.StatViewServlet;
    import com.alibaba.druid.support.http.WebStatFilter;
    import org.apache.ibatis.session.SqlSessionFactory;
    import org.mybatis.spring.SqlSessionFactoryBean;
    import org.mybatis.spring.annotation.MapperScan;
    import org.springframework.beans.factory.annotation.Qualifier;
    import org.springframework.beans.factory.annotation.Value;
    import org.springframework.boot.web.servlet.FilterRegistrationBean;
    import org.springframework.boot.web.servlet.ServletRegistrationBean;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.context.annotation.Primary;
    import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
    import org.springframework.jdbc.datasource.DataSourceTransactionManager;
    
    import javax.sql.DataSource;
    
    /**
     * Iron 自己的数据库
     */
    @Configuration
    @MapperScan(basePackages = IronDruidConfig.PACKAGE, sqlSessionFactoryRef = "ironSqlSessionFactory")
    public class IronDruidConfig {
    
        /**
         * 配置多数据源 关键就在这里 这里配置了不同的数据源扫描不同mapper
         */
        static final String PACKAGE = "com.iron.his.mapper";
    
        /**
         * 连接数据库信息 这个其实更好的是用配置中心完成
         */
        @Value("${spring.datasource.iron.url}")
        private String url;
    
        @Value("${spring.datasource.iron.username}")
        private String username;
    
        @Value("${spring.datasource.iron.password}")
        private String password;
    
        @Value("${spring.datasource.iron.driver-class-name}")
        private String driverClassName;
    
        /**
         * 不同的数据源扫描不同mapper, 放到配置文件里修改。因为发布时,需要改成file:mapper/*.xml 方便后期 SQL调整
         */
        @Value("${spring.datasource.iron.mapper-locations}")
        private String mapperLocations;
    
        @Bean
        public ServletRegistrationBean druidServlet() {
            ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(new StatViewServlet(), "/druid/*");
            // IP白名单
            servletRegistrationBean.addInitParameter("allow", "");//默认就是允许所有访问
            // IP黑名单(共同存在时,deny优先于allow)
            //servletRegistrationBean.addInitParameter("deny", "192.168.1.100");
            //控制台管理用户
            servletRegistrationBean.addInitParameter("loginUsername", "admin");
            servletRegistrationBean.addInitParameter("loginPassword", "123456");
            //是否能够重置数据 禁用HTML页面上的“Reset All”功能
            servletRegistrationBean.addInitParameter("resetEnable", "false");
            return servletRegistrationBean;
        }
    
    
        @Bean
        public FilterRegistrationBean filterRegistrationBean() {
            FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean(new WebStatFilter());
            filterRegistrationBean.addUrlPatterns("/*");
            filterRegistrationBean.addInitParameter("exclusions", "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*");
            return filterRegistrationBean;
        }
    
    //    注解@Primary表示是主数据源
        @Bean("ironDataSource")
        @Primary
        public DataSource ironDataSource(){
            DruidDataSource dataSource = new DruidDataSource();
            dataSource.setUrl(url);
            dataSource.setUsername(username);
            dataSource.setPassword(password);
            dataSource.setDriverClassName(driverClassName);
            return dataSource;
        }
    
        @Bean(name = "ironTransactionManager")
        @Primary
        public DataSourceTransactionManager masterTransactionManager() {
            return new DataSourceTransactionManager(ironDataSource());
        }
    
        @Bean(name = "ironSqlSessionFactory")
        @Primary
        public SqlSessionFactory masterSqlSessionFactory(@Qualifier("ironDataSource") DataSource masterDataSource) throws Exception {
            final SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
            sessionFactory.setDataSource(masterDataSource);
            sessionFactory.setMapperLocations(new PathMatchingResourcePatternResolver().getResources(mapperLocations));
            return sessionFactory.getObject();
        }
    }

    HisDruidConfig

    import com.alibaba.druid.pool.DruidDataSource;
    import org.apache.ibatis.session.SqlSessionFactory;
    import org.mybatis.spring.SqlSessionFactoryBean;
    import org.mybatis.spring.annotation.MapperScan;
    import org.springframework.beans.factory.annotation.Qualifier;
    import org.springframework.beans.factory.annotation.Value;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
    import org.springframework.jdbc.datasource.DataSourceTransactionManager;
    
    import javax.sql.DataSource;
    
    /**
     * his 的数据库 多数据源时使用
     */
    @Configuration
    @MapperScan(basePackages = HisDruidConfig.PACKAGE, sqlSessionFactoryRef = "hisSqlSessionFactory")
    public class HisDruidConfig {
    
        /**
         * 配置多数据源 关键就在这里 这里配置了不同的数据源扫描不同mapper
         */
        static final String PACKAGE = "com.iron.his.hospital.mapper";
    
        /**
         * 连接数据库信息 这个其实更好的是用配置中心完成
         */
    
        @Value("${spring.datasource.his.driver-class-name}")
        private String driverClassName;
    
        @Value("${spring.datasource.his.url}")
        private String url;
    
        @Value("${spring.datasource.his.username}")
        private String username;
    
        @Value("${spring.datasource.his.password}")
        private String password;
    
        /**
         * 不同的数据源扫描不同mapper, 放到配置文件里修改。因为发布时,需要改成file:mapper/*.xml 方便后期 SQL调整
         */
        @Value("${spring.datasource.his.mapper-locations}")
        private String mapperLocations;
    
    
    //    注解@Primary表示是主数据源
        @Bean("hisDataSource")
        public DataSource hisDataSource(){
            DruidDataSource dataSource = new DruidDataSource();
            dataSource.setUrl(url);
            dataSource.setUsername(username);
            dataSource.setPassword(password);
            dataSource.setDriverClassName(driverClassName);
            return dataSource;
        }
    
        @Bean(name = "hisTransactionManager")
        public DataSourceTransactionManager masterTransactionManager() {
            return new DataSourceTransactionManager(hisDataSource());
        }
    
        @Bean(name = "hisSqlSessionFactory")
        public SqlSessionFactory masterSqlSessionFactory(@Qualifier("hisDataSource") DataSource masterDataSource) throws Exception {
            final SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
            sessionFactory.setDataSource(masterDataSource);
            sessionFactory.setMapperLocations(new PathMatchingResourcePatternResolver().getResources(mapperLocations));
            return sessionFactory.getObject();
        }
    }
  • 相关阅读:
    JDK自带keytool工具配置HTTPS加密协议
    利用 GOST 搭建加密中转隧道(UDP+TCP)
    Linux登录报错-bash: /etc/profile: Permission denied
    转:Windows server 2008 R2 更新补丁失败进入恢复模式
    转:Windows server 2008R2更新补丁后进入系统恢复
    转:CENTOS创建IP白名单
    centos6 离线升级openssh防止断开
    关闭oracle一直等待
    Java并发容器
    Java对象序列化
  • 原文地址:https://www.cnblogs.com/vipsoft/p/15826491.html
Copyright © 2020-2023  润新知