CDI provides type-safe dependency injection and context management in Java EE applications. It allows injecting objects through fields, methods, and constructors using qualifiers to resolve dependencies. CDI manages bean scopes like request and conversation scope. It supports producer methods, interceptors, and custom scopes. CDI enables loose coupling between components through dependency injection.