【问题标题】:Java EE Qualifier annotation not picked up未拾取 Java EE 限定符注释
【发布时间】:2014-06-23 10:31:07
【问题描述】:

我正在 youtube 上关注一个简​​单的 Java EE 6 注释视频。我在 github 上创建了一个 repo。有一个 servlet 开始,它使用注释创建一个问候字符串。

@WebServlet(urlPatterns = {"/HelloServlet"})
public class HelloServlet extends HttpServlet {

    @Inject @Formal
    String greetingMessage;
...
}

形式限定符定义如下:

@Qualifier
@Retention(RUNTIME)
@Target({TYPE, METHOD, FIELD, PARAMETER})
public @interface Formal {}

生产者是:

public class ProduceFormalGreeting {

    @Produces
    @Formal
    public String GetFormalGreeting(){
        return "Good morning !";
    }
}

在编译时,我从 NetBeans 收到以下消息:

Unsatisfied Dependency: No bean matches the inject point

在运行时,servlet 中的字符串为null

【问题讨论】:

    标签: dependency-injection java-ee-7


    【解决方案1】:

    您必须将beans.xml 文件添加到WEB-INF。现在你有bean.xml 文件。

    ProduceFormalGreeting你必须使用javax.enterprise.inject.Produces(不是javax.ws.rs.Produces

    【讨论】:

    • 我改成了 beans.xml。结果相同。在注入点 [[BackedAnnotatedField] \@Inject \@Formal mypackage.HelloServlet.greetingMessage] 具有限定符 [\@Formal] 的类型 [String] 的依赖关系不满足
    • 您还有一个错误。在ProduceFormalGreeting 你必须使用javax.enterprise.inject.Produces(不是javax.ws.rs.Produces
    • 不客气。顺便提一句。我已经更新了我的答案,现在提到的问题都收集在一起了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-17
    • 2011-12-30
    • 1970-01-01
    • 1970-01-01
    • 2012-09-18
    • 1970-01-01
    相关资源
    最近更新 更多