带有限定符 @Default 的类型 X 的不满足依赖关系
Posted
技术标签:
【中文标题】带有限定符 @Default 的类型 X 的不满足依赖关系【英文标题】:Unsatisfied dependencies for type X with qualifiers @Default 【发布时间】:2015-02-26 15:44:32 【问题描述】:我正在尝试在 Wildfly 8.2 中运行的 EJB 上注入给定类型 (Greeter
) 的对象。但是,部署总是失败并显示消息
Unsatisfied dependencies for type Greeter with qualifiers @Default
我尝试用@Default
注释GreeterImpl
和注入点,但这也不起作用。我在这里遗漏了什么吗?
我的Greeter
界面:
public interface Greeter
public void sayHi();
我的GreeterImpl
类(唯一实现Greeter
的类):
public class GreeterImpl implements Greeter
private static final Logger LOGGER = LoggerFactory.getLogger(GreeterImpl.class);
@Override
public void sayHi()
LOGGER.info("Hi!");
我的ScheduledGreeter
EJB:
@Stateless
public class ScheduledGreeter
@Inject
private Greeter greeter;
@Schedule(second = "*/15", minute = "*", hour = "*")
public void sayHi()
greeter.sayHi();
我在这里遗漏了一些关于 CDI 的内容吗?我需要beans.xml
META-INF
才能使这个工作吗?
编辑: 我将其作为 war
部署到 Wildfly,如果这很重要的话。
【问题讨论】:
【参考方案1】:在 Java EE 7 中,对 JAR/WARs 的默认扫描是 annotated
,这意味着如果您没有指定扫描模式的 beans.xml
,它将默认为基于注释的扫描。
您的课程GreeterImpl
上没有定义bean 的注释——特别是没有作用域。您可以通过添加beans.xml
或将@Dependent
(或其他范围)添加到您的GreeterImpl
来覆盖它
【讨论】:
该规范也可能对您有用 - docs.jboss.org/cdi/spec/1.2/…以上是关于带有限定符 @Default 的类型 X 的不满足依赖关系的主要内容,如果未能解决你的问题,请参考以下文章
精通C语言ANSI C 类型限定符const,volatile,restrict,_Atomic