Question: I am a little bit confused, we call CDI bean to the beans which we inject them using `@Inject` annotation or the beans which we use `@Inject` inside them ?

Answer: 
> 
> **CDI beans** are classes that CDI can instantiate, manage, and inject
>  automatically to satisfy the dependencies of other objects. Almost any
>  Java class can be managed and injected by CDI.
> 
> 
> 

For example, PrintServlet got dependency on a Message instance and have it injected automatically by the CDI runtime.

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());
    }
}

```

Message.java (**This class is a CDI bean**)

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

```

Cheers!
CDI got introduced in Java EE 6 to provide some of the features available earlier to EJB only to all components managed by container. So CDI bean covers Servlets, SOAP web service, RESTful web service, entities, EJBs etc. 

> 
> So you can use all these terms interchagebly : 
> 
> 
> * CDI bean
> * bean
> * managed bean
> * EJB bean
> * container managed bean etc.
> 
> 
>