问题:有没有一种更干净的方法可以使用SpringBoot从属性文件中加载多个数据源?
复杂度:9/10。
目标:Goal:一个Spring应用程序,用于将数据从一个数据库(旧版Db2数据库)传输到另一个数据库(现代MariaDB数据库)。
Spring Data JPA
所有实体(接口)扩展JpaRepository
令我感到惊讶的是,Spring并没有使它变得更容易。 我最终将解决方案分为2个微服务,每个微服务负责每个数据源。完美运行,但要求将其保留为单个应用程序。
持久性软件包:
旧版软件包内部:
在现代包装内:
我尝试了以下步骤(没有运气):
Configure SpringBoot App with Two DataSources
注意:
spring.jpa.hibernate.ddl-auto
属性是不同的。
两个数据源都使用spring.jpa.database-platform
属性中指定的不同方言。
以下指定的Yml文件:
---
########## Legacy Datasource ################
spring:
datasource:
name: legacyDS
username: db2inst1
password: password
driver-class-name: com.ibm.db2.jcc.DB2Driver
url: jdbc:db2://localhost:50000/legacyDB
sql-script-encoding: UTF-8
################### Hibernate Settings ###################
jpa.database-platform: org.hibernate.dialect.DB2Dialect
jpa.database: default
jpa.show-sql: true
jpa.hibernate.ddl-auto: none
jpa.properties.hibernate.show_sql: true
jpa.properties.hibernate.use_sql_comments: true
jpa.properties.hibernate.format_sql: true
---
############# Modern Datasource ################
spring:
datasource:
name: modernDS
username: root
password:
driver-class-name: org.mariadb.jdbc.Driver
url: jdbc:mariadb://localhost:3306/modernDB
sql-script-encoding: UTF-8
################### Hibernate Settings ###################
jpa.database-platform: org.hibernate.dialect.MariaDB53Dialect
jpa.database: default
jpa.show-sql: true
jpa.hibernate.ddl-auto: create
jpa.properties.hibernate.show_sql: true
jpa.properties.hibernate.use_sql_comments: true
jpa.properties.hibernate.format_sql: true
这是春天!人们原本希望这一挑战相当容易,但它却不必要地复杂。