首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

CDI:注入单实例有效,但注入Instance<>无效。为什么?

CDI(Contexts and Dependency Injection)是Java EE的一个规范,用于管理应用程序的上下文和依赖注入。在CDI中,可以使用注解来标记需要注入的依赖,并由CDI容器负责实例化和管理这些依赖。

在CDI中,注入单实例是有效的,因为CDI容器会在应用程序启动时创建这些单实例,并在整个应用程序的生命周期中共享它们。这样可以确保在应用程序的不同部分中使用相同的实例,避免了重复创建和管理的开销。

然而,注入Instance<>无效的原因是因为Instance<>是一个泛型接口,用于表示一组具有相同类型的实例。在CDI中,Instance<>的注入是延迟加载的,即在需要使用实例时才会进行实例化。这意味着每次使用Instance<>时,CDI容器都会创建一个新的实例,而不是共享同一个实例。

这种设计是为了满足某些特定场景下的需求,例如需要动态获取一组实例的情况。延迟加载的特性使得Instance<>可以在运行时根据需要创建新的实例,而不是事先创建好所有实例。然而,由于Instance<>的注入是延迟加载的,所以无法像注入单实例那样共享同一个实例。

总结起来,CDI中注入单实例有效是因为CDI容器会在应用程序启动时创建并共享这些实例,而注入Instance<>无效是因为Instance<>的注入是延迟加载的,每次使用时都会创建新的实例。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

领券