【发布时间】:2018-08-03 14:42:20
【问题描述】:
我有一些处理器类没有实现任何接口:
public class Processor1 {
}
@Stateles
public class Processor2 {
}
public class Processor3 {
}
其中一个是容器管理的无状态 bean。
服务类已注入所有处理器:
public class MyService {
@Inject private Processor1 p1;
@Inject private Processor2 p2;
@Inject private Processor3 p3;
}
比我的要求是所有处理器都应该实现一个interfase ProcessorInterfase;
更改代码后,部署失败并出现错误:
Caused by: org.jboss.weld.exceptions.DeploymentException: WELD-001408: Unsatisfied dependencies for type Processor2 with qualifiers @Default
好的。我创建了一个新的限定符 @Process2Bean 并将其添加到 Processor2 声明中:
@Stateles
@Process2Bean
public class Processor2 {
}
到注入点:
public class MyService {
@Inject private Processor1 p1;
@Inject @Process2Bean private Processor2 p2;
@Inject private Processor3 p3;
}
现在我有以下部署错误:
Caused by: org.jboss.weld.exceptions.DeploymentException: WELD-001408: Unsatisfied dependencies for type Processor2 with qualifiers @Process2Bean
at injection point [UnbackedAnnotatedField] @Inject @Process2Bean private a.b.c.MyService.p2
我做错了吗? 谢谢。
【问题讨论】:
-
奇怪,预选赛的 imO 应该不是必需的。如果您使用 @EJB 而不是 @Inject 注释处理器 p2 会发生什么?
标签: jakarta-ee ejb cdi