PicoContainer is a mature dependency injector framework similar to spring-core or Guice. It presents the advantage to be quite pretty small (~260Ko) and yet very complete.
Two injections methods have been used primary used.
- Injection by constructor.
- Injection by provider
With pico, you create and manage your own container. Once created, you can
- Add component to the container
- Get component from the container
Here you create a new container, add CliAnalyzer as a dependency and get an instance of CliAnalizer.
The container is configured to "cache" dependencies. Meaning, it insures that there is only one instance of this component created. It is the same as a Singleton in Guice.
Injection by constructor :
PicoContainer supports many types of injections but the preferred way is to pass dependencies in the constructor.
For example, given the following class :
The instance of AClass will be constructed using the instance of CliAnalyzer.
Injection by provider :
Provider gives more flexibility to construct the component instance and it is useful to do some works prior to instantiation.
It is used to create component which need informations from xml (like AutomatedInstallData). All providers are avaible in packages *.container.provider
Injection of primitives :
PicoContainer gives the possibilities to inject primitives (String, Integer, ...). They are resolved by name and it is used to inject to the install file name in the container and different components.