Java EE中的@Producer批注

马龙

我正在学习Java EE CDI,依赖注入,@Produces尤其是。我很奇怪,为什么在getGreedingCard()方法,它需要@Produces在所有的注释,因为这两个类GreetingCardImpl,并AnotherGreetingCardImpl已导入的空间。就像常规的包/类依赖项一样,简单的导入即可解决问题。为什么它需要通过@producer注释进行依赖项注入

感谢您事先的解释。

public interface GreetingCard {
    void sayHello();
}


public class GreetingCardImpl implements GreetingCard {

    public void sayHello() {
        System.out.println("Hello!!!");
    }
}


public class AnotherGreetingCardImpl implements GreetingCard {

    public void sayHello() {
        System.out.println("Have a nice day!!!");
    }
}

import com.javacodegeeks.snippets.enterprise.cdibeans.impl.AnotherGreetingCardImpl;
import com.javacodegeeks.snippets.enterprise.cdibeans.impl.GreetingCardImpl;

@SessionScoped
public class GreetingCardFactory implements Serializable {

    private GreetingType greetingType;

    @Produces
    public GreetingCard getGreetingCard() {
        switch (greetingType) {
            case HELLO:
                return new GreetingCardImpl();
            case ANOTHER_HI:
                return new AnotherGreetingCardImpl();
            default:
                return new GreetingCardImpl();
        }
    }
}
简·格罗斯

我想知道为什么在getGreedingCard()方法中,它根本就需要@Produces批注,因为两个类GreetingCardImpl和AnotherGreetingCardImpl已经导入到空间中了。

好吧,这并不是说getGreetingCard需要@Produces批注。关键是使其他类能够通过依赖注入来接收GreetingCard。

public class Foo {

@Inject // <--- will invoke @Producer method
GreetingCard foosGreetingCard

...

}

请参阅此处以获取更多详细信息:

生产者方法是充当Bean实例源的方法。方法声明本身描述了bean,并且在指定的上下文中不存在任何实例时,容器将调用该方法以获取bean的实例。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Java EE中的CDI-无法注入哪些Java类?

来自分类Dev

Java EE中的HTML提交按钮处理

来自分类Dev

返回null的方法中的java @Nonnull批注

来自分类Dev

Java中的并行和事务处理(Java EE)

来自分类Dev

在Java EE中安全存储SMTP凭证

来自分类Dev

Scala IDE在Eclipse Luna for Java EE中无法正常工作

来自分类Dev

Java EE中的@Producer批注

来自分类Dev

如何让Java批注处理器从projectA中读取和处理批注并为projectB生成Java源文件

来自分类Dev

Java EE中的依赖注入

来自分类Dev

Java EE 7中的request.login()?

来自分类Dev

使用Java中的wait()和notify()的Producer Consumer Program

来自分类Dev

本机查询参数在Java EE中不起作用

来自分类Dev

Java批注反射顺序

来自分类Dev

Java SE中的JPA与Java EE性能

来自分类Dev

在Java EE中持续运行服务

来自分类Dev

使路径参数在Java EE中的WebSocket端点中是可选的

来自分类Dev

Java批注以确定被批注的方法是否执行

来自分类Dev

Eclipse Neon中的Javascript大纲-Java EE IDE

来自分类Dev

Java批注处理,在与被批注的类相同的包中创建源文件

来自分类Dev

Hibernate批注在Java文件中的位置

来自分类Dev

Java EE中的访问控制

来自分类Dev

在Java EE中安全存储SMTP凭证

来自分类Dev

Java EE中的分片并行化

来自分类Dev

使用Java中的wait()和notify()的Producer Consumer Program

来自分类Dev

Java EE-GUI中的实体管理

来自分类Dev

Java SE中的JPA与Java EE性能

来自分类Dev

Web容器中的Java EE API

来自分类Dev

翻译Java批注

来自分类Dev

java.lang.NoClassDefFoundError:java-ee中的rcaller / RCaller