As the adoption of the Context and Dependency Injection for Java EE (CDI) API grows, it is important to understand how to use CDI effectively to maximize the benefits of using a loosely-coupled, type-safe, annotation-driven, clean-room dependency injection solution. This session outlines the best practices and patterns for using CDI such as annotations vs. XML configuration, @Named as a qualifier, qualifier type-safety vs. verbosity, effective use of producers/disposers/injection-point meta-data, using scopes properly, best practices for using conversations, defining effective stereotypes to group related meta-data, interceptors vs. decorators, effective use of interceptors, static vs. dynamic injection/look-up, using CDI events effectively, using alternatives, CDI vs. Java EE resource injection, using CDI with EJB 3.1, CDI/JSF 2 integration patterns, CDI/JPA 2 usage patterns and CDI constraints management with the Bean Validation API.