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

CDI-生成器和限定符不在生成的对象上

吕霄
2023-03-14

假设有一个SessionFactory的生产者(举个例子):

@Produces public SessionFactory produceSessionFactory(){}
@Produces
public DatabaseObject produceDatabaseObject(SessionFactory factory){}

不,我可以这样使用我的数据库对象:

@Inject
DatabaseObject object;

到目前为止,一切都很好。因此,让我们假设这些东西是在一个框架中实现的,并且将被几个应用程序使用。

现在,一个应用程序决定使用另一个SessionFactory,因此它实现了自己的生产者和一个限定符:

@Produces 
@CustomQualifier
public SessionFactory produceSessionFactory(){}
@Inject
@CustomQualifier
DatabaseObject object;
@Produces
@CustomQualifier
public DatabaseObject produceDatabaseObject(@CustomQualifier SessionFactory factory){
    return super.produceDatabaseObject(factory);
}

共有1个答案

司空思聪
2023-03-14

您可以在生产者中使用InjectionPoint来检索限定符并创建适当的实例(例如,请参见https://docs.jboss.org/weld/reference/latest/en-美国/html/injection.html#_the_literal_injectionpoint_literal_object)。

或者,创建一个可移植的扩展。通过这样做,您可以注册/创建自己的bean。只为几个bean创建扩展可能成本太高而收益太小,但您可以在这里查看:https://docs.jboss.org/weld/reference/latest/en-美国/html/extend.html#_registering_a_literal_bean_literal

 类似资料:
  • 是否有方法重写build方法返回SampleClass以避免执行build.build?

  • 问题内容: 这可能是一个愚蠢的问题,但是我还是会问。我有一个生成器对象: 我可以测量它的大小: 据说发电机会被消耗掉: …但保持不变。 使用字符串可以按我的预期工作: 如果有人能启发我,我将不胜感激。 问题答案: 不按照您的想法去做。该方法返回给定对象的内部大小(以字节为单位),而不是生成器将要返回的项目数。 Python无法事先知道生成器的大小。以下面的无限生成器为例(例如,有更好的方法来创建计

  • 我想在我即将完成的一些工作中使用builder模式,它在一个层次结构中有几个类。基类将至少有9个字段要启动,各个子类可能会添加2-4个字段。这会很快失控,而builder模式正是出于这个原因吸引了我。我在书籍和文章中初步接触了builder模式。他们是有帮助的,但没有关于如何扩展这种模式。我试图自己实现这一点,但是我在每个子类的构造函数中遇到了麻烦,因为我不知道如何将构建器中收集的数据传递给超级类

  • 问题内容: 我需要一个创建对象的类,为每个创建的对象分配一个ID。通常,此ID是该类的int属性。我希望每次创建一个对象时都增加该值(ID),然后将其分配给从1开始的那个对象。这让我感到震惊,我需要一个静态int属性。 如何初始化此静态属性? 我是否应该创建一个单独的方法来进行ID的增量(作为ID生成器),该增量在构造函数内部调用? 通常,最有效和精心设计的方法是什么? 问题答案: 就像您提到的I

  • 英文原文:http://emberjs.com/guides/routing/generated-objects/ 正如在定义路由中所说的,无论何时,只要你定义了一个新的路由,Ember.js都会试着根据命名惯例寻找相对应的路由,控制器,视图还有模板类。一旦有任何一个对象找不到,那么在内存中,相对应的对象将会被生成。 生成的路由 假设你有下列路由: 1 2 3 App.Router.map(fu

  • 我得准备一些工作到明天,但我卡住了。(代码中的所有名称都是德语,不要混淆:)) 这是我的构造函数类,用于名为(card)的对象 现在还有另一个类,它应该生成一个由多张卡组成的对象。通常的语法是 但是如何让类生成具有随机名称的多个对象呢?如果我尝试在每个循环的