- Dependency injection
- using constructor
- using methods
- using fields
- Named bindings
- Defining object scope
- Prototype
- Singleton
- Injecting collections
- Injecting primitive data types
- Using both annotations and bindings collection to add bindings, define scope and other details.
- Optional bindings
- Detecting cycle dependencies in constructor