# The Java EE 7 Tutorial

# 23.5 Beans as Injectable Objects

The concept of injection has been part of Java technology for some time. Since the Java EE 5 platform was introduced, annotations have made it possible to inject resources and some other kinds of objects into container-managed objects. CDI makes it possible to inject more kinds of objects and to inject them into objects that are not container-managed.

The following kinds of objects can be injected:

- (Almost) any Java class

- Session beans

- Java EE resources: data sources, Java Message Service topics, queues, connection factories, and the like

- Persistence contexts (Java Persistence API `EntityManager` objects)

- Producer fields

- Objects returned by producer methods

- Web service references

- Remote enterprise bean references

For example, suppose that you create a simple Java class with a method that returns a string:

    package greetings;

    public class Greeting {
        public String greet(String name) {
            return "Hello, " + name + ".";
        }
    }

This class becomes a bean that you can then inject into another class. This bean is not exposed to the EL in this form. Giving Beans EL Names explains how you can make a bean accessible to the EL.