springboot несколько источников данных демо-проект

Справочная информация: Компания хочет создать новый элемент данных, потому что вы хотите запросить данные из нескольких источников данных, и не делал до того, как проект создания заметок, на этот раз, чтобы сделать запись. Из коробки, вкусно Внимание!

Построение процесса столкнулись с некоторыми проблемами, мы будем шаг инструкции. Код Адрес: https://gitee.com/aaron_qc/multi-datasource.git

  1. Сначала на основной курс. Конфигурация источника данных Многоступенчатая
    1. Введение в зависимую tkmapper + друид + MySQL + пружинные загрузки-конфигурации-процессор
      1. <зависимость> 
            <идентификатор_группы> org.springframework.boot </ идентификатор_группы> 
            <артефакта> весна-загрузки конфигурации процессоров </ артефакта> 
            <версия> 2.1.5.RELEASE </ версия> 
        </ зависимость> 
        
        <! - MySQL и mybatis и т.д. -> 
        <зависимость> 
            <идентификатор_группы> tk.mybatis </ идентификатор_группы> 
            <артефакта> картограф-весна-загрузка-стартер </ артефакт> 
            <версия> 2.1.4 </ версия> 
        </ зависимость> 
        
        <зависимость> 
            <идентификатор_группы> MySQL </ идентификатор_группы> 
            <артефакта> MySQL-разъем-Java </ артефакта> 
            <версия> 8.0.11 </ версия> 
        </ зависимость> 
        
        <! - друид ->
        <зависимость> 
            <идентификатор_группы> com.alibaba </ идентификатор_группы>
            <артефакта> друид-весна-загрузка-стартер </ артефакт> 
            <версия> 1.1.10 </ версия> 
        </ зависимость>
    2. Конфигурация выглядит следующим образом
      1. Начало класса плюс @EnableConfigurationProperties.
        1. OceanApplication
          / ** 
           * @author QuCheng на 2019-09-16. 
           * EnableConfigurationProperties使@ConfigurationProperties注解的类(需要加@Component)生效. 
           * / 
          @EnableConfigurationProperties 
          @SpringBootApplication 
          общественного класса OceanApplication { 
              государственной статической силы основных (String [] агдз) { 
                  SpringApplication.run (OceanApplication.class, арг); 
              } 
          }
      2. YML настроить свойства
        1. application.yml атрибут пользовательского имени, и только соответствует соответствующему классу Java
          Друид: 
            # источник данных конфигурации 
            пользователя: корень 
            пароль: XXXX 
            driverClass: com.mysql.cj.jdbc.Driver 
            # Min Max инициализации 
            initialSize :. 5 
            minIdle :. 5 
            для maxActive: 20, 
            testOnBorrow: ложному 
            urlIceberg: JDBC: MySQL: //106.12.176.120 ? / айсбергов serverTimezone = GMT% 2B8 & characterEncoding = UTF-8 & UseSSL = когда ложь # установите часовой пояс 
            urlOcean: JDBC: MySQL: //106.12.176.120/ocean serverTimezone = GMT% 2B8 & characterEncoding = UTF-8 & UseSSL = когда ложь # установить часовой пояс? 
            urlAccount: JDBC: MySQL : //106.12.176.120/account serverTimezone = GMT% 2B8 & characterEncoding = UTF-8 & UseSSL = ложь # установить часовой пояс 
      3. Пользовательские свойства родительского класса нагрузки BaseProperty
        1. Отображение конфигурации YML. 
          пакет com.hb.ocean.druid; 
          
          импорт com.alibaba.druid.pool.DruidDataSource; 
          импорт lombok.Data; 
          импорт org.springframework.boot.context.properties.ConfigurationProperties; 
          импорт org.springframework.stereotype.Component; 
          
          импорт javax.sql.DataSource; 
          
          / ** 
           * DataSource базовый класс 
           * @author qucheng 
           * / 
          @data 
          @ConfigurationProperties (префикс = "друид") 
          @Component 
          класс BaseProperty { 
          
              защищен пользователем строка; 
          
              защищенный Строка пароля; 
          
              защищенные Струнные driverClass; 
          
              защищенный INT initialSize; 
          
              защищенный INT maxActive; 
          
              защищенный INT minIdle;
          
              защищенный булево testOnBorrow; 
          
              защищенный Строка urlAccount; 
          
              защищенная Строка urlOcean; 
          
              защищенный Строка urlIceberg; 
          
          
              DataSource createDataSource (String URL) { 
                  DruidDataSource DataSource = новый DruidDataSource (); 
                  dataSource.setDriverClassName (driverClass); 
                  dataSource.setUrl (URL); 
                  dataSource.setUsername (пользователь); 
                  dataSource.setPassword (пароль); 
                  dataSource.setInitialSize (initialSize); 
                  dataSource.setMaxActive (maxActive); 
                  dataSource.setMinIdle (minIdle); 
                  dataSource.setTestOnBorrow (testOnBorrow); 
                  вернуться DataSource; 
              } 
          }
      4. Их соответствующие источники данных карты конфигурации пути (интерфейсы Mapper + XML-файл)
        1. Путь конфигурации - две другие конфигурации будут опущены
          com.hb.ocean.druid пакет; 
          
          Импорт org.apache.ibatis.session.SqlSessionFactory; 
          Импорт org.mybatis.spring.SqlSessionFactoryBean; 
          Импорт org.springframework.beans.factory.annotation.Qualifier; 
          Импорт org.springframework.context.annotation .Bean; 
          Импорт org.springframework.core.io.support.PathMatchingResourcePatternResolver; 
          Импорт org.springframework.jdbc.datasource.DataSourceTransactionManager; 
          Импорт org.springframework.stereotype.Component; 
          Импорт tk.mybatis.spring.annotation.MapperScan; 
          
          Импорт javax. sql.DataSource; 
          
          / ** 
           * Счет DataSource 
           * MapperScan (использовать имя таблицы сопоставление сущностей ок) аннотации для связывания пакетов и сканирование указанного источника данных, и указанного процесса сопоставителя каталогов без добавления аннотаций 
           * 
           * @ qucheng автор 
           * /
          @Component 
          @MapperScan (basePackages = "com.hb.ocean.mapper.account", sqlSessionFactoryRef = "accountSqlSessionFactory") 
          общественный класс AccountConfig расширяет BaseProperty { 
          
              @Bean (имя = "accountDataSource") 
              общественный DataSource createDataSource () { 
                  вернуться createDataSource (urlAccount ); 
              } 
          
              @Bean (имя = "accountTransactionManager") 
              общественного DataSourceTransactionManager accountTransactionManager () { 
                  вернуть новый DataSourceTransactionManager (createDataSource ()); 
              } 
          
              @Bean (имя = "accountSqlSessionFactory") 
              общественного SqlSessionFactory masterSqlSessionFactory (@Qualifier ( "accountDataSource") DataSource accountDataSource)
                      бросает исключение {  
                  конечная SqlSessionFactoryBean SessionFactory = новый SqlSessionFactoryBean ();
                  sessionFactory.setDataSource (accountDataSource); 
                  Строка mapperLocation = "путь к классам:. Картограф / счет / * XML"; 
                  sessionFactory.setMapperLocations (новый PathMatchingResourcePatternResolver () 
                          .getResources (mapperLocation)); 
                  вернуть sessionFactory.getObject (); 
              } 
          }
      5. Создайте файл в соответствующем каталоге. Проект будет загружен при запуске.
        1. Структура фиг.

           

    3. После успешного запуска результатов испытаний являются
      1. Тестирование кода
        com.hb.ocean.controller пакет; 
        
        Импорт com.hb.ocean.mapper.account.UserMapper; 
        Импорт com.hb.ocean.mapper.iceberg.ItemOrderMapper; 
        Импорт org.springframework.web.bind.annotation.GetMapping; 
        Импорт ORG .springframework.web.bind.annotation.RequestMapping; 
        Импорт org.springframework.web.bind.annotation.RestController; 
        
        Импорт javax.annotation.Resource; 
        
        / ** 
         . * @author QuCheng ON 2019-09-17 
         * / 
        @RestController 
        @ @RequestMapping ( «/ КК») 
        общественный класс TestView { 
        
            / ** 
             * не рекомендуется слой ДАО непосредственно вводить в слой контроллера. Вот только продемонстрировать использование 
             * / 
            @Resource 
            Private UserMapper UserMapper; 
            @Resource
            частный ItemOrderMapper itemOrderMapper; 
        
            @GetMapping ( "/ тест") 
            тест общественного String () { 
                System.out.println ( "用户数:" + userMapper.selectCountUser (NULL, NULL)); 
                System.out.println ( "订单数:" + itemOrderMapper.selectCountSuccessOrder (NULL, NULL)); 
                вернуться «ОК»; 
            } 
        }
      2. Результаты испытаний

Некоторые вопросы возникают также в течение процесса

  1. Множество источников данных YML разделяют базовую конфигурацию, в дополнение к источнику данных URL несовместимым.
  2. Пользовательские элементы конфигурации необходимо YML свойство
    1. 引入 весенне-загрузки конфигурации процессор.
    2. Класс Start использует аннотации @EnableConfigurationProperties
    3. Синтаксический класс 3, чтобы ввести в вышеуказанный комментарий @data только для удобства. @ConfigurationProperties (префикс = «Друид») задаются следующим образом: «друид» начинает свойство. @Component представлено управление контейнером
  3. класс конфигурации @MapperScan аннотация используется tk.mybatis.spring.annotation.MapperScan комментария. org.mybatis.spring.annotation.MapperScan также может быть использован, но он не может быть использован в сочетании @Table карты аннотаций.

Процесс springboot конфигурации нескольких источников данных, как описано выше. Это демо-версия. Кроме того, относится к практическому применению данных

  1. эврика открытие регистрации. Начните введение класса нот
  2. симулировать вызовы интерфейсов и не запал
  3. Элегантно простой процесс завершения работы
  4. чванство документ
  5. Redis Distributed Transaction

 

рекомендация

отwww.cnblogs.com/nightOfStreet/p/11543768.html