Skip to main content

Notice: this Wiki will be going read only early in 2024 and edits will no longer be possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.

Jump to: navigation, search

Difference between revisions of "Eclipse4/API/DI"

< Eclipse4‎ | API
(New page: 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 ...)
 
Line 1: Line 1:
Dependency Injection ("DI") and the IEclipseContext
+
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.
+
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 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:
+
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
+
*Create a new instance of a class gicen the class spec and a context  
*Inject an existing instance with the values in a context
+
*Inject an existing instance with the values in a context  
 
*Find and execute specifically annotated methods within an existing instance
 
*Find and execute specifically annotated methods within an existing instance
 +
 +
== The Eclipse Context<br>  ==
 +
 +
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.

Revision as of 15:18, 4 March 2013

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.

Copyright © Eclipse Foundation, Inc. All Rights Reserved.