Bind-DI Decorators
| Decorator | Parameters | Applies to | Description |
|---|---|---|---|
| @Component | Optionally takes a string or Symbol. If string of Symbol is passed it becomes the unique Identifier of component | Class or Method of Component factory | If applied to a method of a class, that class must itself be decorated with @Component and must be a Singleton component |
| @Inject | Optionally takes a string or Symbol as Identifier of dependency component | Class method Class setter function Constructor argument |
Component with smaller Lifecycle scope cannot be a dependency of component with broader Lifecycle scope. For example a NewInstance scoped component cannot be a dependency of Singleton-scoped component. This rule is enforced during container initialization stage. |
| @PostConstruct | None | Class method | Method decorated with this decorator must return Promise<boolean> or throw Error with description of a problem. Only Singleton Component can have method with this decorator and Only One method of a class can have this decorator. |
| @PreDestroy | None | Class method | Method decorated with this decorator must return Promise<boolean> or throw Error with description of a problem. Only Singleton Component can have method with this decorator and Only One method of a class can have this decorator. |
| @Scope | One of values of ComponentScope enum |
Component Class | Components have default scope. Default scope for all components is defined by Container’s .defaultScope parameter. This decorator overrides the default scope of component |
| @Singleton | None | Class | This decorator is a shorthand for @Scope(ComponentScope.SINGLETON) |
| @NewInstance | None | Class | This decorator is a shorthand for @Scope(ComponentScope.NEWINSTANCE) |
| @Environment | Variable number of strings | Component Class | A Component that has @Environment(“DEV”, “TEST”) will only be added to Container if NODE_ENV environment variable is set to either ‘DEV’ or ‘TEST’. This allows to have multiple components with the same unique Identifier but with different values of @Enviromnent and have different components loaded in Development, Testing, Production, etc. |
| @EnvOverride | None | Component Class | Component decorated with @EnvOverride is turned into a Proxy object. Any property of Component class can now be overwritten by the value set in Environment. |