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

CDI:只有一个生产者的不明确依赖关系

沈永贞
2023-03-14

我在尝试部署web应用程序时遇到以下错误:

在注入点[BackedAnnotatedField]处具有限定符@Default\n的AuthzInfo类型的依赖项不明确

可能的依赖项:\n-Producer方法[AuthzInfo],其限定符[@Any@Default]声明为[[BackedAnnotatedMethod]@producers@RequestScoped

我只创造了一个这样的制作人:

@Produces @RequestScoped
public AuthzInfo getAuthzInfo(@Context HttpServletRequest httpRequest) 
    //...
}

我正在使用@Inject注释

@Inject private AuthzInfo authzInfo;

但是,我已经创建了一个@MONTUser注释,并且使用此注释标记了@Producer@MONTUser@Inject@MONTUser。问题已经解决了。

为什么我需要使用此工作环境?只有一个生产者生成AuthInfo对象。

共有1个答案

施冠玉
2023-03-14

producer方法返回AuthzInfo,但AuthzInfo本身是一个CDI管理的bean。这就是为什么它是不明确的,在这种情况下需要一个限定符。

您可能正在bean中使用bean发现模式=“all”。xml

如果您更改为Bean-Disportation-Mode="注释"(CDI 1.2中的默认值,并且不需要beans.xml),则只会发现具有bean定义注释的类,而忽略所有其他类:

2.5.1。Bean定义注释

bean类可以具有bean定义注释,允许将其放置在应用程序中的任何位置,如Bean Archives中定义的。带有bean定义注释的bean类被称为隐式bean。

bean定义注释集包含:

>

  • @ApplicationScoped@SessionScoped@ConversationScoped@RequestScoped注释,

    所有其他正常范围类型,

    @Interceptor@Decorator注释,

    所有原型注释(即注释为@Steretype pe的注释),

    以及@相关的范围注释。

  •  类似资料:
    • 我试图修改我们现有的CDI扩展,它创建自己的代理bean。现在只有一个为每个服务创建的代理。服务有类似于应用程序范围的东西,所以服务总是只有一个实例。 我想要完成的是为每个注入点创建一个代理bean。我需要它们来存储特定于给定注射点的一些信息。如果同一个服务有更多的注入点,那么将有更多的代理bean,但它们后面仍然有一个服务实例。但是,当我以这种方式更改行为时,Weld会抱怨不明确的依赖关系,因为

    • 我正在尝试弄清楚Disruptor是否适合我的应用程序:一个相当复杂的负载生成器,用于长时间对高性能数据库进行基准测试。Disruptor模式很有吸引力,因为: 高吞吐量 低延迟 无垃圾/可预测的长时间运行行为 应用程序拓扑的简化版本如下: ===P1=== 由馈送的系统组件有1个生产者馈送许多并行消费者(当前为)。每个事件应该由这些消费者之一恰好处理一次。排序约束是:如果A在B之前产生,那么A将

    • 我需要将bean的同一个实例注入到我的应用程序的几个地方,并创建了以下工厂类,该类使用注释来初始化bean,注释来返回bean的同一个实例。 我遇到的问题是,当我部署应用程序GlassFish时,会返回以下错误消息: 我可以通过添加注释来克服这个异常,但是这似乎不是解决问题的最佳方法。 我不想在应用程序中到处添加一个限定符,因为使用不同的实现需要在多个地方更改代码。其目的是,工厂的更高版本将读取配

    • 我正试图将我的JSF应用程序迁移到CDI。我已经暗示了以下变化: null deploymentException:WELD-001409类型[EagerBeansRepository]在注入点[[BakedAnnotatedField]@inject private org.omnifaces.applicationListener.EagerBeansRepository]具有限定符[@def

    • 有人能解释一下CDI范围注释在生产者中的作用吗?他们似乎什么也做不了。 这些,自然地,在启动时给出了这个(省略的)错误。 WELD-001409:类型的依赖关系不明确。可能的依赖关系: 带有限定符[@Any@Default]的生产者方法[Thing]声明为[[BackedAnnotatedMethod]@生成公共pkg。测验东西制作人。thingMaker(), 因此,尽管“RequestScop

    • 我正在从WF 7.4.0迁移。最终比分为16.0.0。最终的在解决了不同模块的升级问题后,我遇到了以下问题:一个不明确的依赖项异常。如何保持与两个数据库的连接? SessionFactory hibernate-core-5.3.9现在似乎是从EntityManagerFactory扩展过来的,而它没有扩展到hibernate-core-4.2.14(WF7.4)。SessionFactory在H