Package Index

Overview

Sisu is a modular JSR330-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.

Packages

org.eclipse.sisu Injectable API for Sisu components (a.k.a beans).
org.eclipse.sisu.bean Customizable injection of bean properties, based on http://code.google.com/p/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.