Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/388.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 依赖注入不工作_Java_Jakarta Ee_Cdi_Wildfly 10 - Fatal编程技术网

Java 依赖注入不工作

Java 依赖注入不工作,java,jakarta-ee,cdi,wildfly-10,Java,Jakarta Ee,Cdi,Wildfly 10,我的限定词是: @Qualifier @Target({ TYPE, METHOD, PARAMETER, FIELD }) @Retention(RUNTIME) @Documented public @interface JPADAOQ { } 这就是我要注射的豆子 @JPADAOQ @ApplicationScoped public class PlotDaoImpl extends JpaDao<Long, Plot> implements PlotDao { pu

我的限定词是:

@Qualifier
@Target({ TYPE, METHOD, PARAMETER, FIELD })
@Retention(RUNTIME)
@Documented
public @interface JPADAOQ {
}
这就是我要注射的豆子

@JPADAOQ
@ApplicationScoped
public class PlotDaoImpl extends JpaDao<Long, Plot> implements PlotDao {
    public PlotDaoImpl() {
      super(Plot.class);
    }
}
但我总是把它设为空,所以我不能使用它

我的配置:
1.beans.xml

<?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"
    bean-discovery-mode="all">
</beans>

2.pom.xml 基于wildfly快速启动表单


org.jboss.spec
jboss-javaee-7.0
${version.jboss.spec.javaee.7.0}
聚甲醛
进口
javax.enterprise
CDIAPI
假如
org.jboss.spec.javax.annotation
jboss-annotations-api_1.2_规范
假如
org.jboss.spec.javax.servlet
jboss-servlet-api_3.1_规范
假如

我不明白为什么我的bean没有注入int@PostConstruct方法。

@javax.faces.bean.ApplicationScoped
指定JSF托管bean是应用程序范围的,但必须注释为托管bean


@javax.enterprise.context.ApplicationScoped
是一个CDI故事。你必须以某种方式创造它。可能在PlotDaoImpl中添加一个方法,该方法用@products注释,返回
this

@javax.faces.bean.ApplicationScoped
指定JSF托管bean是应用程序范围的,但必须注释为托管bean


@javax.enterprise.context.ApplicationScoped
是一个CDI故事。你必须以某种方式创造它。可能在PlotDaoImpl中添加一个方法,该方法带有@products注释,返回
this

首先,我假设您的
@ApplicationScoped
实际上是
javax.enterprise.context.ApplicationScoped
。虽然如果不是像
all
discovery模式那样,它不会造成任何伤害,但是发现模式仍然会将类作为bean来选择

其次,
@ManagedBean
注释可以被删除,因为CDI将自动将类作为一个对象拾取

第三,在测试
PlotController
时,确保您确实有一个活动会话。您必须让CDI为您创建
PlotController
bean,以使注入工作


如果没有其他帮助,您可以尝试将
@SessionScoped
替换为
@RequestScoped
,因为在bean可用性方面,行为可能略有不同,但这只是一个猜测。

首先,我假设您的
@ApplicationScoped
实际上是
javax.enterprise.context.ApplicationScoped
。虽然如果不是像
all
discovery模式那样,它不会造成任何伤害,但是发现模式仍然会将类作为bean来选择

其次,
@ManagedBean
注释可以被删除,因为CDI将自动将类作为一个对象拾取

第三,在测试
PlotController
时,确保您确实有一个活动会话。您必须让CDI为您创建
PlotController
bean,以使注入工作

如果没有其他帮助,您可以尝试将
@SessionScoped
替换为
@RequestScoped
,因为在bean可用性方面,行为可能略有不同,但这只是一个猜测

<?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"
    bean-discovery-mode="all">
</beans>
   <dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.jboss.spec</groupId>
            <artifactId>jboss-javaee-7.0</artifactId>
            <version>${version.jboss.spec.javaee.7.0}</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

<dependencies>        
    <dependency>
        <groupId>javax.enterprise</groupId>
        <artifactId>cdi-api</artifactId>
        <scope>provided</scope>
    </dependency>

    <dependency>
        <groupId>org.jboss.spec.javax.annotation</groupId>
        <artifactId>jboss-annotations-api_1.2_spec</artifactId>
        <scope>provided</scope>
    </dependency>

    <dependency>
        <groupId>org.jboss.spec.javax.servlet</groupId>
        <artifactId>jboss-servlet-api_3.1_spec</artifactId>
        <scope>provided</scope>
    </dependency>
</dependencies>