当未引用的@Singleton bean被销毁时?

时间:2014-02-18 15:39:31

标签: java scope cdi

我有一个带有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。什么时候会被摧毁?

1 个答案:

答案 0 :(得分:2)

From the docs目前还不清楚是否会在某个特定点销毁@Singleton bean 我不会依赖它。例如,Weld.shutdown() @PreDestroy期间未在@Singleton上调用方法。

使用@ApplicationScoped bean,它在功能上是相同的(除了代理之外),也可以在Java SE中使用并且将被销毁#39;当应用程序上下文结束时。