在@PreDestroy

时间:2017-10-27 18:29:55

标签: java spring spring-ioc

我有两个豆子。两者都有@PreDestroy方法。其中一个bean必须在他的@PreDestroy中调用第二个,而第二个是活着的。我怎么能这样做?

我将提供更详细的问题描述。 在我的应用程序关闭时,我必须释放一些资源(令牌)。但是一旦我得到这些代币的数量不明,我就有了

  1. 要存储的令牌的内存存储库
  2. 一个网关,提供获取这些令牌并释放它们的方法。
  3. 商业逻辑服务
  4. 所以在上下文关闭之前,我想从存储库中获取所有令牌并使用我服务中的网关释放它们。

2 个答案:

答案 0 :(得分:0)

Spring尝试以与创建它们相反的顺序销毁bean,因此您可以尝试利用它。

话虽如此,除非有人提出一些非常特殊的理由,否则我会反对。我相信有一种更好的方法可以做你想做的事情,而不依赖于你没有直接控制的事情。

如果你提供了更多关于你想要实现的目标的背景,我们可以提供更多帮助。

答案 1 :(得分:-1)

理论上你可以像下面的代码一样调用它:

@PreDestroy
 private void destroy() {
   // injection by context goes here
 }

但这不是正确的做法。在你的第一个物体被摧毁的那一刻,第二个物体的参考也会被摧毁。

如果您提供有关您正在尝试的更多详细信息,我们可以帮助您。