我有一个弹簧引导应用程序,它有多个数据库。无论数据库的状态如何,我都想运行这个应用程序。下面是我的应用程序yaml的样子
logging:
level:
org:
hibernate:
SQL: DEBUG
type:
descriptor:
sql:
BasicBinder: TRACE
spring:
sql:
init:
continue-on-error: true # <-- didn't work
jpa:
properties:
hibernate:
format_sql: 'true'
show-sql: 'true'
datasource:
azure-read-only:
url: <azure_db1_url>
username: '<username>'
password: '<password>'
driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
continue-on-error: true
hikari: # <--- add this to bypass boot failure but it didn't work either
minimum-idle: 0
maximum-pool-size: 15
connection-timeout: 10000 #10s
idle-timeout: 300000 #5m
max-lifetime: 600000 #10m
initialization-fail-timeout: -1
validation-timeout: 1000 #1s
azure-read-write:
url: <azure_db2_url>
username: '<username>'
password: '<password>'
driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
continue-on-error: true
hikari:
minimum-idle: 0
maximum-pool-size: 15
connection-timeout: 10000 #10s
idle-timeout: 300000 #5m
max-lifetime: 600000 #10m
initialization-fail-timeout: -1
validation-timeout: 1000 #1s
db2-testdb1:
url: <another_db_not_hosted_on_azure>
username: '<username>'
password: '<passwor'
driver-class-name: com.ibm.db2.jcc.DB2Driver
continue-on-error: true
hikari:
minimum-idle: 0
maximum-pool-size: 15
connection-timeout: 10000 #10s
idle-timeout: 300000 #5m
max-lifetime: 600000 #10m
initialization-fail-timeout: -1
validation-timeout: 1000 #1s对于数据源,我有一个数据源,即Primary bean,而其他数据源是非主数据源。我怎样才能运行spring引导应用程序,即使它无法连接到所有dbs。
发布于 2022-07-06 19:21:23
您可以“手动”实例化数据源,然后将其提供给Spring。例如:
@Configuration
public class MyConfigBean {
@Lazy
@Autowired
private DataSource dataSource;
@Bean
public DataSource getDataSource() {
log.debug(">>> Building the DATA-SOURCE");
DataSourceBuilder<?> dataSourceBuilder = DataSourceBuilder.create();
dataSourceBuilder.driverClassName(JDBC_DRIVER_CLASS_NAME);
dataSourceBuilder.url(props.getJDBCUrl());
dataSourceBuilder.username(props.getJDBCUsername());
dataSourceBuilder.password(props.getJDBCPassword());
return dataSourceBuilder.build();
}
}@Lazy注释将对getDataSource()方法的调用保留到最后。通过这种方式,您可以在更早的时候检索/填充URL和凭据,因此它们在需要的时候已经准备好了。
https://stackoverflow.com/questions/72886981
复制相似问题