Dependency Injection ("DI") and the IEclipseContext
DI (aka 'Inversion of Concerns") is a recent development in development. It's based on teh premise that it's better for a component to describe what it needs and having those requirements met through the use of an appropriate 'context' Rather than requiring the component to rely on external frameworks through which it can satisfy its own requirements.
In order for the component to expose its needs it uses a set of java annotations, some generic (@Inject, @PostConstruct...) as well as domain (e4) specific (@Focus, @CanExecute...).
In order to be useful there are a number of things that must be possible:
- Create a new instance of a class gicen the class spec and a context
- Inject an existing instance with the values in a context
- Find and execute specifically annotated methods within an existing instance
The Eclipse Context
In order for DI to work there must be some container from which injectable values can be retrieved. In e4 this is the IEclipseContext. In reality these contexts are defined in a tree and the values are retrieved using a lookup strategy (What is it ?).
The package org.eclipse.e4.core.contexts or uninject and Object or to invoke specifically annotated methods on an Object.