我有一个带有CDI / Weld的Java SE应用程序(以org.jboss.weld.environment.se.StartMain
开头)。
我正在将@Singleton
bean注入另一个bean:
public class CdiMain {
@Inject
private MySingleton mySingleton;
public void onStart(@Observes ContainerInitialized event) {
mySingleton.printHello();
mySingleton = null;
// other long running stuff
}
}
我不需要printHello
方法之后的单例bean。什么时候会被摧毁?
答案 0 :(得分:2)
From the docs目前还不清楚是否会在某个特定点销毁@Singleton
bean
我不会依赖它。例如,Weld.shutdown()
@PreDestroy
期间未在@Singleton
上调用方法。
使用@ApplicationScoped
bean,它在功能上是相同的(除了代理之外),也可以在Java SE中使用并且将被销毁#39;当应用程序上下文结束时。