Documentation
Working with definitions
Working with definitions
Build and customize service definitions programmatically before compilation.
You may sometimes want to use definitions to build your container or to modify the container behaviour, for example in compiler pass process methods.
Using definition to build your container
import {ContainerBuilder, Definition} from 'node-dependency-injection'
let container = new ContainerBuilder()
let definition = new Definition(SomeClass)
container.setDefinition('some_manager', definition)
This is a shortcut of
import {ContainerBuilder, Definition} from 'node-dependency-injection'
let container = new ContainerBuilder()
container.register('some_manager', SomeClass)
You can also send arguments in the definition constructor like:
import {ContainerBuilder, Definition, PackageReference} from 'node-dependency-injection'
let container = new ContainerBuilder()
let definition = new Definition(SomeClass, [
'some_string_dependency',
new PackageReference('some-npm-package')
])
container.setDefinition('some_manager', definition)
Method Calls
If the service you are working with uses setter injection then you can manipulate any method calls in the definitions as well:
definition.addMethodCall('setLogger', [new Reference('logger')]);
Service as private
definition.public = false
Get service instance as factory
definition.setFactory(SomeManager, 'getFactory')
Set service as deprecated
definition.deprecated = 'Example of message deprecation'
Set service as lazy
definition.lazy = true
Add tag to service
definition.addTag('tag_name')
Add property to service
definition.addProperty('property_name', new Reference('app.some_manager'))
Container definition methods
- findTaggedServiceIds(string tagName): Iterable<Definition>
get a list of tagged services Definitions - hasDefinition(string serviceName): boolean
find out if there is an serviceName definition - has(string serviceName): boolean
find out if there is an serviceName definition or alias - getDefinition(string serviceName): Definition
get the serviceName definition - findDefinition(string serviceName): Promise<Definition>
get the definition with the serviceName ID or alias - setDefinition(Definition definition): Definition
sets a definition to register in to the container - removeDefinition(string serviceName): boolean
removes an already set definition
