SpringBoot项目停止前更新数据 hikari

1、项目上遇到一个问题,服务停止前需要更新系统的数据。但是在钩子方法里更新的时候发现,hikari数据源已经被卸载了。
2、请问如何指定卸载数据源之前的操作,等待操作完成后再写在数据源?

Spring 在销毁 bean 之前会通过 DestructionAwareBeanPostProcessor#postProcessBeforeDestruction 通知应用,可以通过下面的示例代码在卸载 DataSource 之前执行一些操作。

@Component
public class DataSourceDestructionBeanPostProcessor implements DestructionAwareBeanPostProcessor {

    @Override
    public void postProcessBeforeDestruction(Object bean, String beanName) throws BeansException {
        if (bean instanceof DataSource) {
            // 销毁前执行特定操作
            System.out.println("数据源即将被销毁");
        }
    }
}

了解 Spring bean 更多的生命周期,可以看我之前写过的一篇文章 Java 面试必备的 Spring Bean 生命周期总结_zzuhkp的博客-CSDN博客

如果解决了你的问题,麻烦给个采纳。

换一种思路,spring容器销毁数据源的时候,去触发你的回调
或者自己去拿数据源配置,手动获取connection