当前位置: 首页 > 知识库问答 >
问题:

防止手动实例化@Application ationScoped CDI托管bean

何修能
2023-03-14

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

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

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

共有1个答案

国言
2023-03-14

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

 类似资料:
  • 问题内容: 我正在使用域,视图和控制器。每个都包含自己的类。 该域包含许多不应在该域外部的类中实例化的类。我的印象是默认访问修饰符将为我提供帮助。使我的域类的构造函数包可见。 事实证明,导入正确的package.class文件后,任何类仍可以使用构造函数。 如何防止这种情况发生? 问题答案: 当您说“结果是,导入正确的package.class文件后,任何类仍然可以使用构造函数。” 我猜你在谈论反

  • 我正在尝试用EmbeddedMongoDB测试我的spring data mongodb存储库,这些存储库是从MongoRepository扩展的接口。与本教程一样,我希望创建不使用spring应用程序上下文的测试,如果我在存储库类中使用普通mongoTemplate,这是可以实现的。 因此,是否可以通过传递Mongo&MongoTemplate实例,使用提供的实用工具方法来实例化MongoRep

  • 我坚持从普通Java到Spring的简单重构。应用程序有一个“容器”对象,该对象在运行时实例化其部分。让我用代码解释一下: 基本上,在加载容器期间,要求一些外部系统向他提供关于每个的数量和配置的信息,然后它根据给定的规范创建bean。 问题是:通常当我们在Spring这样做的时候 我们的对象已完全配置,并已注入所有依赖项。但是在我的例子中,我必须实例化一些对象,在我执行load()方法后,这些对象

  • 主要内容:实例,运行测试结果以下代码显示了如何进行bean注入。 我们先定义一个消息bean,它有一个字符串属性来存储消息。 然后我们再定义另一个托管bean,并使用注解注入。 实例 打开 NetBean8.2,创建一个名为: InjectManagedBeans 的工程,并加入以下文件代码。 以下是文件:UserBean.java 中的代码 - 以下是是文件:index.xhtml 中的代码 - 以下是文件:Message

  • 问题内容: 我坚持了从纯Java到Spring的简单重构。应用程序具有一个“容器”对象,该对象在运行时实例化其部分。让我用代码解释一下: 基本上,在装入容器时,它要求某个外部系统向他提供有关每个RuntimeBean的数量和配置的信息,然后根据给定的规范创建bean。 问题是:通常在春季时 我们的对象已完全配置,并注入了所有依赖项。但就我而言,我必须实例化一些对象,这些对象在执行load()方法后

  • 问题内容: 我有一个带有@Inject注释的字段的类。我使用反射实例化了Class,但是我希望CDI注入实例来执行Class实例字段。有办法吗? 有人知道该怎么做吗?如果有一种无需使用反射扫描每个字段的方法,我将不胜感激。 提前致谢。 问题答案: 这完成了工作 SomeBean bean = CDI.current()。select(SomeBean.class).get();