在 Spring 上配置多个数据库 - 使用 JPA 和 Hibernate Web 应用程序启动
Configure Multiple Database on Spring-Boot with JPA and Hibernate Web Application
我有一个 spring 引导 (1.5.4.RELEASE) 项目使用 java 8 部署在 AWS HPC 上。该项目架构师范围适用于 Spring Web 应用程序(网站)、Rest API 服务(移动开发人员) & 公司帐户管理。
所以有 3 个不同的数据库,例如 (2-SQL Server & 1-MySQL).
在 stack-overflow 上,我发布了我的问题,希望在有才华的 stack-overflow 用户的帮助下找到实现此 Spring-Boot 项目的最佳方法。
这是我的配置属性文件。
application.properties
#For Public Website
spring.datasource.clone.web.driver = com.microsoft.sqlserver.jdbc.SQLServerDriver
spring.datasource.clone.web.url = jdbc:sqlserver://127.0.0.01\dbo:1433;databaseName=PROD_WEB;
# Username and password
spring.datasource.web.username = web
spring.datasource.web.password = ED5FLW64ZU976Q36
#For Rest API
spring.datasource.clone.url = jdbc:mysql://localhost:3306/PROD_REST;
# Username and password
spring.datasource.clone.username = rest
spring.datasource.clone.password = Firewall77#
#For Account Administration for Company Users
spring.datasource.admin.url = jdbc:sqlserver://127.0.0.01\dbo:1433;databaseName=PROD_ADMIN;
# Username and password
spring.datasource.admin.username = admin
spring.datasource.admin.password = Firewall77#
# Backup & Cron Policy
...
如果能提供一些很好的实施建议,我将不胜感激。你在这方面的知识对我有帮助,谢谢。
尝试使用在 Configuration for each data sources for more help check this Using multiple datasources with Spring Boot and Spring Data
指定的数据源配置
您需要实现两个不同的beans
,每个数据源一个,并使它们分别采用相应的配置属性:
- 第一个
bean
将负责第一个 datasource
配置,并且应该被声明为 primary
数据源 @Primary
, 所以它可以被设置为项目的主要数据源。
- 第二个
bean
将配置第二个数据源。
在 Spring
:
中应该如何实现它们
@Bean
@Primary
@ConfigurationProperties(prefix="spring.datasource.web")
public DataSource primaryDataSource() {
return DataSourceBuilder.create().build();
}
@Bean
@ConfigurationProperties(prefix="spring.datasource.rest")
public DataSource secondaryDataSource() {
return DataSourceBuilder.create().build();
}
下面是您的 application.properties
配置,以考虑这两个 beans
配置:
#For Public Website
spring.datasource.web.driver = com.microsoft.sqlserver.jdbc.SQLServerDriver
spring.datasource.web.url = jdbc:sqlserver://127.0.0.01\dbo:1433;databaseName= PROD_WEB;
# Username and password
spring.datasource.web.username = web
spring.datasource.web.password = ED5FLW64ZU976Q36
#For Rest API
spring.datasource.rest.driver = com.microsoft.sqlserver.jdbc.SQLServerDriver
spring.datasource.rest.url = jdbc:mysql://localhost:3306/PROD_REST;
# Username and password
spring.datasource.rest.username = rest
spring.datasource.rest.password = Firewall77#
注:
我在这里更改了配置属性,以便可以区分 web
和 rest
数据源:
- 以
spring.datasource.web
开头的属性将专用于配置第一个数据源。
- 以
spring.datasource.rest
开头的属性将专用于配置第二个数据源。
我有一个 spring 引导 (1.5.4.RELEASE) 项目使用 java 8 部署在 AWS HPC 上。该项目架构师范围适用于 Spring Web 应用程序(网站)、Rest API 服务(移动开发人员) & 公司帐户管理。 所以有 3 个不同的数据库,例如 (2-SQL Server & 1-MySQL).
在 stack-overflow 上,我发布了我的问题,希望在有才华的 stack-overflow 用户的帮助下找到实现此 Spring-Boot 项目的最佳方法。
这是我的配置属性文件。
application.properties
#For Public Website
spring.datasource.clone.web.driver = com.microsoft.sqlserver.jdbc.SQLServerDriver
spring.datasource.clone.web.url = jdbc:sqlserver://127.0.0.01\dbo:1433;databaseName=PROD_WEB;
# Username and password
spring.datasource.web.username = web
spring.datasource.web.password = ED5FLW64ZU976Q36
#For Rest API
spring.datasource.clone.url = jdbc:mysql://localhost:3306/PROD_REST;
# Username and password
spring.datasource.clone.username = rest
spring.datasource.clone.password = Firewall77#
#For Account Administration for Company Users
spring.datasource.admin.url = jdbc:sqlserver://127.0.0.01\dbo:1433;databaseName=PROD_ADMIN;
# Username and password
spring.datasource.admin.username = admin
spring.datasource.admin.password = Firewall77#
# Backup & Cron Policy
...
如果能提供一些很好的实施建议,我将不胜感激。你在这方面的知识对我有帮助,谢谢。
尝试使用在 Configuration for each data sources for more help check this Using multiple datasources with Spring Boot and Spring Data
指定的数据源配置您需要实现两个不同的beans
,每个数据源一个,并使它们分别采用相应的配置属性:
- 第一个
bean
将负责第一个datasource
配置,并且应该被声明为primary
数据源@Primary
, 所以它可以被设置为项目的主要数据源。 - 第二个
bean
将配置第二个数据源。
在 Spring
:
@Bean
@Primary
@ConfigurationProperties(prefix="spring.datasource.web")
public DataSource primaryDataSource() {
return DataSourceBuilder.create().build();
}
@Bean
@ConfigurationProperties(prefix="spring.datasource.rest")
public DataSource secondaryDataSource() {
return DataSourceBuilder.create().build();
}
下面是您的 application.properties
配置,以考虑这两个 beans
配置:
#For Public Website
spring.datasource.web.driver = com.microsoft.sqlserver.jdbc.SQLServerDriver
spring.datasource.web.url = jdbc:sqlserver://127.0.0.01\dbo:1433;databaseName= PROD_WEB;
# Username and password
spring.datasource.web.username = web
spring.datasource.web.password = ED5FLW64ZU976Q36
#For Rest API
spring.datasource.rest.driver = com.microsoft.sqlserver.jdbc.SQLServerDriver
spring.datasource.rest.url = jdbc:mysql://localhost:3306/PROD_REST;
# Username and password
spring.datasource.rest.username = rest
spring.datasource.rest.password = Firewall77#
注:
我在这里更改了配置属性,以便可以区分 web
和 rest
数据源:
- 以
spring.datasource.web
开头的属性将专用于配置第一个数据源。 - 以
spring.datasource.rest
开头的属性将专用于配置第二个数据源。