【问题标题】:Prevent manual instantiation of @ApplicationScoped CDI managed bean防止手动实例化 @ApplicationScoped CDI 托管 bean
【发布时间】:2015-10-05 08:23:51
【问题描述】:

我的 Java EE 应用程序中有一个 Singleton 类。 我通过使用 @ApplicationScoped 注释类并让 CDI 处理所有事情来实现这一点。

我的问题是我是否可以防止此类的意外手动实例化,因为 CDI 要求我有一个非私有的无参数构造函数?

“经典”非 CDI 解决方案将具有私有构造函数、静态 INSTANCE 字段和返回此实例的静态工厂方法。

【问题讨论】:

    标签: jakarta-ee ejb cdi java-ee-6


    【解决方案1】:

    您可以使用您提到的“经典”非CDI解决方案,然后使用@Produces注释工厂方法(或静态最终字段)。

    【讨论】:

    • 我想我必须了解@Produces 的工作原理。我在任何地方都需要@ApplicationScoped 这个解决方案吗?如果@Produces 方法总是返回相同的实例(因为CDI 应该控制实例的创建和销毁),CDI 框架是否不会混淆?
    猜你喜欢
    • 2015-06-15
    • 2016-10-24
    • 2013-03-05
    • 2023-03-10
    • 2016-08-05
    • 2015-04-20
    • 1970-01-01
    • 2016-06-08
    • 2016-05-02
    相关资源
    最近更新 更多