1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/baomidou-dynamic-datasource-spring-boot-starter

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

Запускатель для быстрой интеграции нескольких источников данных на основе Spring Boot

dynamic-spring-boot-starter

Введение

dynamic-datasource-spring-boot-starter — это запускатель для быстрой интеграции нескольких источников данных на основе Spring Boot.

Поддерживает JDK 1.7+, SpringBoot 1.5.x, 2.x.x, 3.x.x.

Документация | Documentation

Подробная документация https://www.kancloud.cn/tracy5546/dynamic-datasource/2264611

Вклад | Contributing

Мы приветствуем вклады сообщества, пожалуйста, ознакомьтесь с CONTRIBUTING.md.# Функции

  • Поддержка группирования источников данных, подходящая для различных сценариев: чисто многобазовый, разделение на чтение и запись, один основной и несколько дополнительных, смешанный режим.
  • Поддержка шифрования чувствительных конфигураций баз данных (шифрование, настраиваемое) ENC().
  • Поддержка независимой инициализации структуры схемы и базы данных для каждого источника данных.
  • Поддержка запуска без источников данных, поддержка ленивой загрузки источников данных (создание соединений по мере необходимости).
  • Поддержка настраиваемых аннотаций, требующих наследования от DS (3. 2. 0+).
  • Предоставление и упрощение быстрой интеграции с Druid, HikariCp, BeeCp, DBCP2.
  • Предоставление схем интеграции с Mybatis-Plus, Quartz, ShardingJdbc, P6spy, JNDI и другими компонентами.
  • Предоставление настраиваемых схем источников данных (например, полная загрузка из базы данных).
  • Предоставление схемы динамического добавления и удаления источников данных после запуска проекта.
  • Предоставление схемы чистого разделения на чтение и запись в окружении Mybatis.
  • Предоставление схемы использования динамических параметров SPEL для анализа источников данных. Встроенная поддержка SPEL, сессий, заголовков, настраиваемая поддержка.
  • Поддержка вложенного переключения источников данных (ServiceA >>> ServiceB >>> ServiceC).
  • Предоставление схемы распределенных транзакций на основе Seata.- Предоставление локальной схемы транзакций для нескольких источников данных. # Соглашения1. Этот фреймворк предназначен только для переключения источников данных и не ограничивает ваши конкретные действия. После переключения источника данных вы можете выполнять любые операции CRUD.
  1. В конфигурационных файлах все разделенные подчеркиванием _ источники данных имеют начальную часть имени группы. Источники данных с одинаковыми именами групп будут объединены в одну группу.
  2. Переключение источников данных может быть выполнено по имени группы или по имени конкретного источника данных. При использовании имени группы для переключения используется алгоритм балансировки нагрузки.
  3. По умолчанию имя основного источника данных — master. Вы можете изменить его с помощью параметра spring.datasource.dynamic.primary.
  4. Приоритетное переключение источников данных: явное переключение в коде > аннотации на методах > аннотации на классах (по принципу ближайшего расстояния).
  5. DS поддерживает наследование от абстрактных классов и интерфейсов.

Способ использования

  1. Включите dynamic-datasource-spring-boot-starter или dynamic-datasource-spring-boot3-starter.
  • Для spring-boot 1.5.x 2.x.x
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>dynamic-datasource-spring-boot-starter</artifactId>
    <version>${version}</version>
</dependency>
  • Для spring-boot 3 и выше
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>dynamic-datasource-spring-boot3-starter</artifactId>
    <version>${version}</version>
</dependency>
```2. Настройте источники данных.

```yaml
spring:
  datasource:
    dynamic:
      enabled: true # Включить динамическое переключение источников данных, по умолчанию true
      primary: master # Установить основной источник данных или группу источников, по умолчанию master
      strict: false # Требовать точное совпадение источника данных, по умолчанию false. При true выбрасывается исключение, если источник данных не найден, при false используется основной источник данных
      grace-destroy: false # Управление закрытием источников данных, по умолчанию false. При true, если активные соединения остаются при закрытии источника данных, ожидание до 10 секунд перед принудительным закрытием
      datasource:
        master:
          url: jdbc:mysql://xx.xx.xx.xx:3306/dynamic
          username: root
          password: 123456
          driver-class-name: com.mysql.jdbc.Driver # Поддерживается с версии 3.2.0
        slave_1:
          url: jdbc:mysql://xx.xx.xx.xx:3307/dynamic
          username: root
          password: 123456
          driver-class-name: com.mysql.jdbc.Driver
        slave_2:
          url: ENC(xxxxx) # Встроенное шифрование, подробности в документации
          username: ENC(xxxxx)
          password: ENC(xxxxx)
          driver-class-name: com.mysql.jdbc.Driver
        #......
        #Вышеуказанные настройки создают основной источник данных master и группу slave с двумя источниками данных slave_1 и slave_2

Множественные основные и реплицирующиеся базы данных:

spring:
  datasource:
    dynamic:
      datasource:
        master_1:
        master_2:
        slave_1:
        slave_2:
        slave_3:
```**Чисто множественные базы данных:**
```yaml
spring:
  datasource:
    dynamic:
      datasource:
        mysql:
        oracle:
        sqlserver:
        postgresql:
        h2:

Смешанная конфигурация:

spring:
  datasource:
    dynamic:
      datasource:
        master:
        slave_1:
        slave_2:
        oracle_1:
        oracle_2:
  1. Использование @DS для смены источника данных.

@DS может быть применен к методам или классам, при этом для методов предпочтение отдается над классами.

Аннотация Результат
Без @DS По умолчанию
@DS("dsName") dsName может быть именем группы или конкретной базы данных

@Service
@DS("slave")
public class UserServiceImpl implements UserService {

    @Autowired
    private JdbcTemplate jdbcTemplate;

    public List selectAll() {
        return jdbcTemplate.queryForList("select * from user");
    }

    @Override
    @DS("slave_1")
    public List selectByCondition() {
        return jdbcTemplate.queryForList("select * from user where age > 10");
    }
}

Введение

На основе SpringBoot: динамический источник данных, разделение мастер-слейв, быстрый запуск, поддержка распределённых транзакций. Развернуть Свернуть
Java
Apache-2.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/baomidou-dynamic-datasource-spring-boot-starter.git
git@api.gitlife.ru:oschina-mirror/baomidou-dynamic-datasource-spring-boot-starter.git
oschina-mirror
baomidou-dynamic-datasource-spring-boot-starter
baomidou-dynamic-datasource-spring-boot-starter
master