Eclipse Sisu Container 0.9.0-SNAPSHOT API

Overview

Sisu is a modular JSR-330-based container that supports classpath scanning, auto-binding, and dynamic auto-wiring.

Sisu uses Google-Guice to perform dependency injection and provide the core JSR330 support, but removes the need to write explicit bindings in Guice modules:

Guice.createInjector(
  new WireModule(                       // auto-wires unresolved dependencies
    new SpaceModule(                     // scans and binds @Named components
      new URLClassSpace( classloader )    // abstracts class/resource finding
) ) );
In the example above the SpaceModule scans the classpath using the ClassSpace abstraction. Any classes annotated with a @Qualifier annotation like @Named will be bound as components, making them visible to the BeanLocator and surrounding WireModule (constructed around the set of modules making up the application; in this example there is only one, the SpaceModule).

The WireModule uses the Guice introspection SPI to analyze all bindings in the application and apply various rules to finish wiring the configuration. Unsatisfied @Inject requirements are populated using the BeanLocator which provides a lookup service across all injectors it knows about, allowing for plugin-style solutions. As well as individual components, the WireModule can satisfy requests for component collections like Lists and Maps (using @Named values as keys). It also cleans up duplicate and overridden bindings, and merges Parameters bindings.

Sisu Container 
Package Description
org.eclipse.sisu
Injectable API for Sisu components (a.k.a beans).
org.eclipse.sisu.bean
Customizable injection of bean properties, based on https://github.com/google/guice/wiki/CustomInjections.
org.eclipse.sisu.inject
Dynamic bean lookup across multiple injectors.
org.eclipse.sisu.launch
Utilities to test, launch, and extend Sisu applications.
org.eclipse.sisu.osgi  
org.eclipse.sisu.space
Customizable scanning of bean implementations.
org.eclipse.sisu.wire
Customizable wiring of unresolved dependencies.
org.sonatype.inject
Deprecated; new applications should use org.eclipse.sisu.