如何以正确的顺序销毁bean(使用会话和单例作用域)?

时间:2018-10-01 13:41:51

标签: java spring spring-mvc

我正在用Spring开发一个Web应用程序,它具有两种类型的bean作用域-单例和会话。会话级bean正在使用单例提供的不同服务。这些服务之一负责清理用户会话中的文件。在正常使用情况下,此方法可以正常运行,但在关闭应用程序时会失败。会话级bean在单例之后被破坏。这意味着会话bean请求服务已经被破坏。

我的应用程序所需的销毁bean的顺序为:

  • 会话作用域bean;
  • 单粒豆。

我已经尝试过DependsOn注释来描述依赖关系,但是它不能按我需要的方式工作。使用注释(也可以使用@Order),我只能在单例bean中控制创建和销毁的顺序。

此外,我的Web应用程序配置完全基于注释。

1 个答案:

答案 0 :(得分:0)

我的解决方法是创建会话管理器服务。 此服务监视会话,并且在@PreDestroy事件上,所有注册的会话均无效,这将破坏所有会话作用域对象。现在一切都可以很好地清理了。