java—当由于某些外部数据源问题而无法创建HikaridataSourcebean时,如何使应用程序仍然运行?

3yhwsihp  于 2021-07-24  发布在  Java
关注(0)|答案(1)|浏览(328)

当一个实时webapp的外部数据库出现问题,并且应用程序再次重试时bean无法示例化时,那么app就会崩溃,我们如何解决这个问题?

@Bean(destroyMethod = "close")
public DataSource dataSource(){
    HikariConfig hikariConfig = new HikariConfig();
    hikariConfig.setDriverClassName("com.mysql.jdbc.Driver");
    hikariConfig.setJdbcUrl("jdbc:mysql://localhost:3306/spring-test"); 
    hikariConfig.setUsername("root");
    hikariConfig.setPassword("admin");

    hikariConfig.setMaximumPoolSize(5);
    hikariConfig.setConnectionTestQuery("SELECT 1");
    hikariConfig.setPoolName("springHikariCP");

    hikariConfig.addDataSourceProperty("dataSource.cachePrepStmts", "true");
    hikariConfig.addDataSourceProperty("dataSource.prepStmtCacheSize", "250");
    hikariConfig.addDataSourceProperty("dataSource.prepStmtCacheSqlLimit", "2048");
    hikariConfig.addDataSourceProperty("dataSource.useServerPrepStmts", "true");

    HikariDataSource dataSource = new HikariDataSource(hikariConfig);

    return dataSource;
}
cpjpxq1n

cpjpxq1n1#

如果数据源关闭,代码可能会抛出异常。将其 Package 为try/catch,如下所示:

try {
   <your code goes here>
} catch (Exception e) {
   return null;
}

但是调用数据源的代码必须接受可能为null的结果,而不是抛出nullpointerexceptions。

相关问题