java - 有没有办法定义 cdi 销毁实例的顺序?
问题描述
我正在开发一个应用程序,其中注入了一些服务。应用程序关闭后,我想定义调用 destroy() 函数的顺序。
例如,“服务 A 需要在服务 B 之前关闭”。
有没有办法做这样的事情?
解决方案
假设您有两个对象,A
并且B
彼此没有关系,例如在 @Singleton
范围(只是一个任意范围)中。Bean
据我所知,在调用它们的产生方法时没有明确的顺序destroy()
:A
可以先销毁,B
也可以先销毁。
假设现在你有这三个对象:
A
在@Singleton
范围内(同样,任意范围)B
在@Dependent
范围内,注入A
C
在@Dependent
范围内,注入B
在这种情况下,再次假设我们谈论的是自定义 bean 而不是托管 bean,C
将首先被销毁B
,然后是A
.
据我所知,这是规范提供的唯一订购保证。
推荐阅读
- javascript - 无法读取未定义的属性“推送”创建对象的数组属性(Javascript)
- objective-c - 获取属性值时的 EXC_BAD_ACCESS
- arrays - 文件名、目录名或卷标语法不正确 - 尝试在 go lang 中读取文件时
- amazon-web-services - DynamoDB 中的数据模型
- python - 列表理解打破内循环
- mysql - 通过在 MySQL 中传递名称来获取域名
- mysql - Join 3 table with query builder in laravel
- python - 烧瓶升级 - 控制台中有很多“异常忽略...”消息
- java - 在android开发中检查gps的状态
- css - CSS:如何选择特定的兄弟元素