带有限定符 @Default 的类型 X 的依赖关系不满足

问题描述 投票:0回答:1

我正在尝试在 Wildfly 8.2 内运行的 EJB 上注入给定类型 (

Greeter
) 的对象。但是,部署总是失败并显示消息

Unsatisfied dependencies for type Greeter with qualifiers @Default

我尝试用

GreeterImpl
注释
@Default
和注入点,但这也不起作用。我在这里错过了什么吗?

我的

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,如果这很重要的话。

java jakarta-ee cdi code-injection
1个回答
32
投票

在 Java EE 7 中,JAR/WAR 的默认扫描是

annotated
,这意味着如果您没有指定扫描模式的
beans.xml
,它将默认为基于注释的扫描。

你的类,

GreeterImpl
没有bean定义注释——没有特别的范围。您可以通过添加
beans.xml
或将
@Dependent
(或其他范围)添加到
GreeterImpl

来覆盖此设置
© www.soinside.com 2019 - 2024. All rights reserved.