Java Contexts and Dependency Injection (JSR-299) is a new Java standard for dependency injection and contextual lifecycle management.
JSR-299 defines a set of services for the Java EE environment that makes applications much easier to develop. JSR-299 layers an enhanced lifecycle and interaction model over existing Java component types including JavaBeans and Enterprise Java Beans. As a complement to the traditional Java EE programming model, the services provide:
- an improved lifecycle for stateful components, bound to well-defined contexts,
- a typesafe approach to dependency injection,
- interaction via an event notification facility,
- a better approach to binding interceptors to components, along with a new kind of interceptor, called a decorator, that is more appropriate for use in solving business problems, and
- an SPI for portable extensions.
JSR-299 is especially useful in the context of web applications, but is applicable to many different kinds of applications and may even be used in the Java SE context, in conjunction with an embeddable EJB Lite container, as defined in the EJB 3.1 specification.
The specification was heavily influenced by Seam and Google Guice. The Expert Group is led by Red Hat.
Weld, the JSR-299 RI (Reference Implementation) and the JSR-299 TCK (Technology Compatibility Kit) are being at seamframework.org. Both are licensed under the Apache License 2.0.