@depentent范围不是Wildfly中的默认值吗?[英] Is @Dependent scope not default in Wildfly?

问题描述

我在使用wildfly通过@Inject注入pojos时遇到了一些麻烦.文档明确指出:

@dependent-指定默认范围;这意味着存在一个物体,可以完全服务一个客户(bean),并具有与该客户端(Bean)相同的生命周期.

但是,当我有两个类时:

@Singleton
@Startup
public class A{
    @Inject
    private B b;
}

public class B{
    public B(){}
}

我继续得到:

在注射点[BackedAnnotatedField] @Inject [...]

的but type b type b type b type byty依赖依赖性不满意的依赖关系[...]

当我添加 @依赖性时,一切都像魅力一样工作.我想念什么吗?这种行为是野生蝇特定的吗?希望您能提供帮助,谢谢.

推荐答案

Java EE 7(CDI 1.1)中使用CDI时,默认的bean发现模式为annotated.这意味着任何具有明确指定范围的豆类都可以进行注射.

因此,要使您的豆B用于注射,您可以:

  1. 在B级上声明明确的范围(这是您在放置@Dependent>时要做的)
  2. 将beans.xml bean-discovery-mode属性设置为all声明.这将使您的所有档案中的所有豆类都可以注射(与Java EE 6(CDI 1.0)相同).

beans.xml文件必须在META-INF文件夹中,看起来像:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://xmlns.jcp.org/xml/ns/javaee"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/beans_1_1.xsd"
       version="1.1" 
       bean-discovery-mode="all">

</beans>

但是,我不建议使用bean-discovery-mode="all".

本文地址:https://www.itbaoku.cn/post/978437.html