spring优雅释放资源 实现了AutoCloseable接口Spring 的底层机制会自动识别它并将其注册为可销毁的 Bean。为了让你更清楚地了解这个机制我为你整理了详细的触发条件和执行原理1. 自动清理的触发条件Spring 能够自动调用close()方法需要满足以下两个核心条件必须是 Spring 管理的 Bean你的XskyFileStorageService需要被 Spring 容器管理例如使用了Component、Service注解或者在配置类中通过Bean定义。必须是单例Singleton这是最关键的一点。Spring只会自动管理单例 Bean 的销毁。如果你的 Bean 是默认的单例模式Spring 默认作用域容器关闭时会调用close()。如果你的 Bean 是原型模式Prototype即每次获取都创建新实例Spring 容器不会自动调用close()你需要自己手动调用或者使用 Bean 销毁回调接口。2. 底层原理适配器模式Spring 之所以能识别AutoCloseable是因为在 Bean 生命周期的最后阶段初始化后Spring 会检查 Bean 的类型。当 Spring 发现一个 Bean 实现了AutoCloseable接口时它会使用一个内部类DisposableBeanAdapter将这个 Bean 包装起来。这个适配器实现了 Spring 标准的DisposableBean接口。当容器关闭时Spring 统一调用DisposableBean.destroy()方法而这个适配器内部会将调用转发给你的close()方法。3. 销毁方法的执行顺序如果你在同一个 Bean 中同时使用了多种销毁方式Spring 会按照特定的顺序执行。了解这个顺序对于排查问题很有帮助表格执行顺序销毁方式说明1PreDestroy注解优先执行 JSR-250 标准的注解方法2DisposableBean.destroy()接着执行 Spring 扩展接口的实现3AutoCloseable.close()这就是你当前使用的方式4自定义destroy-method最后执行配置中指定的销毁方法如 XML 或Bean(destroyMethod...)