我有以下application.properties:
## Spring DATASOURCE (DataSourceAutoConfiguration & DataSourceProperties)
spring.datasource.url= ${DATASOURCE_URL}
spring.datasource.username= ${DATASOURCE_USERNAME}
spring.datasource.password= ${DATASOURCE_PASSWORD}
## Other Database
second.datasource.url="jdbc:oracle:thin:@localhost:1521:XE"
second.datasource.username=usr
second.datasource.password=password
second.datasource.driver-class-name=oracle.jdbc.OracleDriver
second.jpa.show-sql=true
## Hibernate Properties
# The SQL dialect makes Hibernate generate better SQL for the chosen database
spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5InnoDBDialect
spring.jpa.hibernate.ddl-auto = update
spring.jpa.database=default
当前有效的目标和事物:顶部的spring数据源工作正常。我可以将它用于我的所有主要需求。第二个是在它下面,它将查询遗留系统并从那里获取数据。
问题:我根本不知道如何让第二个数据源工作。我需要让它执行查询并让它返回一些东西。理想情况下,我希望看到一个有效的例子。我查看了一些博客文章,并用Google搜索,我显然遗漏了一些重要信息。
以上是默认值,spring可以自己找到它。要创建不同的DataSource,您需要在某处设置数据源bean,并从配置中读取值。
最简单的方法是创建一个带有配置注释的类,并为两个dataSource定义bean。
我建议使用HikariDataSource,你可以在这里阅读更多关于如何设置它的信息:https://www.baeldung.com/hikaricp
对于配置,您可以通过自动装配环境并从那里读取属性来使用环境。
例如,environment.getProperty(“second.datasource.url”)
请查看以下链接中的说明:https://www.baeldung.com/spring-data-jpa-multiple-databases
1)您需要为每个数据源提供JPA配置,其中2)每个源都有独立的实体包,3)您必须将其中一个数据源指定为主数据源。