我正在制作一个带有自定义 transactionManager 的 spring boot 应用程序,它有自己的数据源,就像这样。顺便说一句,我使用 hikariCP 作为数据源
@Configuration
@EnableTransactionManagement
@EnableJpaRespositories(
basePackages = "..."
entityManagerFactoryRef = "..."
transactionManagerRef = "..."
)
public class myDataSourceConfigration {
@Bean
@Primary
@Configuration("myconfig.datasource")
public DataSourceProperties myconfigDataSourceProperties() {
return new DataSourceProperties();
}
@Bean
@Primary
@Configuration("myconfig.datasource.configurations")
public DataSource myconfigDataSource(){
return myconfigDataSourceProperties().initializeDataSourceBuilder().type(HikariDataSource.class).build;
}
@Bean
@Primary
public LocalContainerEntityManagerFactoryBean myconfigEntityManagerFactory(EntityManagerFactoryBuilder builder){
return builder
.dataSource(myconfigDataSource)
.packages(MyClass.class)
.build;
}
@Bean
@Primary
public PlatformTransactionManager myconfigTransactionManager(
final @Qualifier ("myconfigEntityManagerFactory")LocalContainerEntityManagerFactoryBean myconfigEntityManagerFactory){
return new JpaTransactionManager(myconfigEntityManagerFactory.getObject());
}
}
在我的 application.properties 中,我有这些配置
myconfig.datasource.url:url
myconfig.datasource.username:username
myconfig.datasource.password:password
myconfig.datasource.driverClassName:driverClass
现在这一切都可以正常工作,但问题是当它不起作用时。例如,如果我输入了错误的密码,hikari 会引发连接池异常,但应用程序会继续运行。我希望应用程序失败,抛出异常并关闭,但我无法弄清楚。我尝试像这样添加另一个名为initializationFailTimeout 的配置,myConfig.datasource.initializationFailTimeout:5000
但同样的问题,我看到一个异常,但应用程序继续运行。
无论如何,当hikari引发连接异常时如何使spring boot快速失败?
谢谢