什么是CDI bean?

Yas*_*har 17 java java-ee cdi

我有点困惑,我们将CDI bean称为使用@inject注释或我们在其中使用@inject的bean注入它们的bean?

dhe*_*ran 11

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());
    }
}
Run Code Online (Sandbox Code Playgroud)

Message.java(此类是CDI bean)

@RequestScoped
public class Message {
    @Override
    public String get() {
        return "Hello World!";
    }
}
Run Code Online (Sandbox Code Playgroud)

干杯!


Mic*_*aev 6

CDI beanCDI container是由(例如 Weld)管理的 bean 。

  • 如果是的话@injected——那就是豆子

  • 如果它是可能的@injects东西-它也是豆子。


小智 6

CDI没有引入一种名为"CDI Bean"的新bean类型,它具有自己独特的组件模型.CDI提供了一组服务,这些服务可以由其现有组件模型定义的托管bean和EJB使用.所以CDI只是处理CDI生命周期的Bean(EJB或Managed Bean),具有"Context"和其他旧功能"DI"的范围.