【发布时间】:2018-01-10 07:07:08
【问题描述】:
在我的 Web 应用程序中,我有一个带有 @Bean 注释方法的 Spring @Configuration 类,它为我的应用程序所依赖的服务创建客户端。客户端是通过构建器创建的,该构建器通过在内部使用private static AtomicBoolean isClientCreated 变量来强制只存在一个客户端实例。
当我的一个 web 应用程序类更改强制 tomcat 重新加载(通过 web.xml 中的 PreResources 配置)时,客户端创建失败,因为即使在 bean 被销毁后,私有静态 AtomicBoolean isClientCreated 仍然是 true。
如何在 tomcat 重新加载时重置此静态值?
【问题讨论】:
-
不要使用
static AtomicBoolean,而是为单例bean创建字段 -
不幸的是,构建器是一个我们无法控制的 3p 库。