Запускатель для быстрой интеграции нескольких источников данных на основе Spring Boot
dynamic-datasource-spring-boot-starter — это запускатель для быстрой интеграции нескольких источников данных на основе Spring Boot.
Поддерживает JDK 1.7+, SpringBoot 1.5.x, 2.x.x, 3.x.x.
Подробная документация https://www.kancloud.cn/tracy5546/dynamic-datasource/2264611
Мы приветствуем вклады сообщества, пожалуйста, ознакомьтесь с CONTRIBUTING.md.# Функции
_
источники данных имеют начальную часть имени группы. Источники данных с одинаковыми именами групп будут объединены в одну группу.spring.datasource.dynamic.primary
.dynamic-datasource-spring-boot-starter
или dynamic-datasource-spring-boot3-starter
.<dependency>
<groupId>com.baomidou</groupId>
<artifactId>dynamic-datasource-spring-boot-starter</artifactId>
<version>${version}</version>
</dependency>
<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:
@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");
}
}
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.