Dependency injection in Java EE 6 allows injecting dependencies into classes through constructors, setters, and fields. It supports injecting various types of beans including EJBs and managed beans. Features of CDI include qualifiers to select specific implementations of interfaces to inject, producer methods to dynamically provide dependencies, and interceptors for cross-cutting concerns. Scopes determine when injected instances are created and destroyed. Events allow classes to observe and respond to occurrences in the system.