什么是 CDI 豆?

2022-09-01 23:13:48

我有点困惑,我们称CDI豆为我们使用注释注入它们的豆子或我们在它们内部使用的豆子?@Inject@Inject


答案 1

CDI Bean 是 CDI 可以自动实例化、管理和注入以满足其他对象的依赖关系的类。几乎任何Java类都可以由CDI管理和注入。

例如,PrintServlet 依赖于 Message 实例,并由 CDI 运行时自动注入它。

PrintServlet.java

@WebServlet("/printservlet")
public class PrintServlet extends HttpServlet {
    @Inject private Message message;

    @Override
    public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {
        response.getWriter().print(message.get());
    }
}

消息.java(此类是 CDI 豆)

@RequestScoped
public class Message {
    @Override
    public String get() {
        return "Hello World!";
    }
}

干杯!


答案 2

CDI 不会引入一种称为 CDI Bean 的新 Bean 类型,它具有自己独特的组件模型。

CDI 提供了一组服务,这些服务可由其现有组件模型定义的受管 Bean 和 EJB 使用

因此,CDI 只是一个 Bean(EJB 或 Managed Bean)处理 CDI 生命周期,具有 Context 和其他旧功能 DI 的范围


推荐