WELD-001408:在注入点 [BackedAnnotatedField] @Inject @Default限定符的



我在@Inject时收到错误。我不明白为什么。

我的应用服务器:眼镜鱼 4.1.2

当我@Inject我创建的类时,服务器出错

java.io.IOException: com.sun.enterprise.admin.remote.RemoteFailureException: Error occurred during deployment: Exception while loading the app : CDI deployment failure:WELD-001408: Unsatisfied dependencies for type UserService with qualifiers @Default at injection point [BackedAnnotatedField] @Inject private jobs.SignUpCDIB.userServiceat jobs.SignUpCDIB.userService(SignUpCDIB.java:0)

当我@Inject我创建的类时,服务器出错

package jobs;
import services.UserService;
import javax.enterprise.context.ConversationScoped;
import javax.inject.Inject;
import javax.inject.Named;
import java.io.Serializable;
@Named
@ConversationScoped
public class SignUpCDIB implements Serializable {
private static final long serialVersionUID = 1L;
@Inject
private UserService userService;
}

我正在尝试将其注入另一个类,例如:

package services;
import jobs.User;
public interface UserService {
void save(User user);
}

用户服务实现 java 类

package services;
import jobs.User;
import java.io.Serializable;
public class UserServiceImpl implements UserService, Serializable {
@Override
public void save(User user) {
}
}

Maven pom xml file

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>groupId</groupId>
<artifactId>loginTutorials1</artifactId>
<version>1.0-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>com.sun.faces</groupId>
<artifactId>jsf-api</artifactId>
<version>2.2.13</version>
</dependency>
<dependency>
<groupId>com.sun.faces</groupId>
<artifactId>jsf-impl</artifactId>
<version>2.2.13</version>
</dependency>
<dependency>
<groupId>javax.inject</groupId>
<artifactId>javax.inject</artifactId>
<version>1</version>
</dependency>
<dependency>
<groupId>javax.enterprise</groupId>
<artifactId>cdi-api</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-api</artifactId>
<version>7.0</version>
</dependency>
</dependencies>
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</pluginManagement>
</build>
</project>```

收到此错误的原因从 DI 容器生成的错误消息中可以明显看出。正如你所看到的:

Unsatisfied dependencies for type UserService with qualifiers @Default at injection point

容器通知您没有符合请求实现注入条件的 bean(即UserService这种情况(。

添加@Singleton批注可使此批注对 DI 容器可见,同时自动符合注入条件。

所讨论的注释的工作方式与您在其他类上的@ConversationScoped几乎相同,尽管 bean 可用的范围存在一些差异。

我建议你好好读一下 bean 和 DI 的一般处理方式。

最新更新