LCCP-DYNAMICDB-STARTER
Springboot动态追加数据源
动态追加切换,线上灵活运行
LCCP(lower-code-create-platform)是一系列的微服务和starter包的出包平台的简称
LCCP-DYNAMICDB-STARTER是针对springboot项目提供数据源的动态控制的包
目的是为了支持工具类型的服务在现场能够在界面动态的切换数据库。
场景一:
1. **证书许可服务**正常启动后,需要导入安装许可来对服务进行初始化; 2. 安装许可就包含了现场的**数据库信息**,导入安装许可后,该证书服务才能被初始化完毕。技术栈
springboot 2.3.4
spring-data-jpa 2.3.4
一定要看清版本,hibernate4和5是不兼容的。
特点功能 对于后端- 数据源切换后,可以自由选择是否生成表;
- 数据源添加和切换方式灵活,可在项目中定制数据源的切换方式和数据源的持久化方式;
- 配置简单,引入该starter包 ,仅需在配置文件中配置即可进行简单配置即可;
- 支持二次开发,拓展更多的数据库支持类型;
使用方式展示
引入包
yml配置com.sdt lccp-dynamicdb-starter 0.0.1.0
spring:
jpa:
show-sql: true
hibernate:
ddl-auto: update
properties:
hibernate.naming.physical-strategy: org.hibernate.scripts.model.naming.PhysicalNamingStrategyStandardImpl
lccp:
dynamic:
datasource:
enable: true
dataSourceProvider: com.sdt.license.dynamic.provide.DynamicDataSourceProvider
repositoryPath: com.sdt.license.*
entityPath: com.sdt.license.*
和我们包相关的配置是spring.jpa下的配置和lccp下的配置。dynamic的配置是我们示例中持久化的位置。
启动类配置@EnableTransactionManagement
@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class, HibernateJpaAutoConfiguration.class})
启动的时候排除掉数据库和orm的自动装配的类。
public class DynamicDataSourceProvider implements IDataSourceProvider {
@Override
public RegisterDbConnReq getDbInfo(ApplicationContext applicationContext) {
RegisterDbConnReq dbEntity = new RegisterDbConnReq();
// 省去业务逻辑,自定义的数据源提供类,没有则直接返回空的连接信息
return dbEntity;
}
}
只要实现IDataSourceProvider接口即可。
public interface IDynamicDataSourceService {
void addDbInfo(RegisterDbConnReq req);
void switchDB(String dbName);
List viewDB();
void deleteDBInfo(String dbName);
}
如何使用的示例地址:
license-server · master · 史皓燃 / lccp-cloud · GitLab



