lucee.Componentcoldbox.system.ioc.Injector
Copyright Since 2005 ColdBox Framework by Luis Majano and Ortus Solutions, Corp www.ortussolutions.com --- The WireBox injector is the pivotal class in WireBox that performs dependency injection. It can be used standalone or it can be used in conjunction of a ColdBox application context. It can also be configured with a mapping configuration file called a binder, that can provide object/mappings and configuration data. A WireBox Injector: Builds the graphs of objects that make up your application. All injectors implement: coldbox.system.ioc.IInjector Easy Startup:
injector = new coldbox.system.ioc.Injector();Binder Startup
injector = new coldbox.system.ioc.Injector(new MyBinder());Binder Path Startup
injector = new coldbox.system.ioc.Injector( "config.MyBinder" );
Property Summary | ||||
---|---|---|---|---|
type | property | default | serializable | required |
any
|
asyncManager
The Global AsyncManager.
|
true
|
false
|
|
any
|
binder
The Configuration Binder object.
|
true
|
false
|
|
any
|
cacheBox
CacheBox Link.
|
true
|
false
|
|
struct
|
childInjectors
An injector can have children injectors referenced by a unique name.
|
true
|
false
|
|
any
|
coldbox
ColdBox Application Link.
|
true
|
false
|
|
any
|
eventManager
Event Manager Link.
|
true
|
false
|
|
array
|
eventStates
Configured Event States.
|
true
|
false
|
|
any
|
injectorID
The injector Unique ID.
|
true
|
false
|
|
any
|
log
Log Reference.
|
true
|
false
|
|
any
|
logBox
LogBox and Class Logger.
|
true
|
false
|
|
any
|
parent
Parent Injector.
|
true
|
false
|
|
any
|
scopeStorage
Scope Storages Utility.
|
true
|
false
|
|
any
|
scopes
LifeCycle Scopes.
|
true
|
false
|
|
any
|
taskScheduler
The logBox task scheduler executor.
|
true
|
false
|
|
any
|
utility
ColdBox Utility class.
|
true
|
false
|
|
any
|
version
WireBox Version.
|
true
|
false
|
Constructor Summary | |
---|---|
init([any binder='coldbox.system.ioc.config.DefaultBinder'], [struct properties='[runtime expression]'], [any<Controller> coldbox=''])
Constructor. |
Method Summary | |
---|---|
any
|
autowire(any target, [any<Mapping> mapping], [any targetID=''], [boolean annotationCheck='false'])
I wire up target objects with dependencies either by mappings or a-la-carte autowires. |
private any
|
buildBinder(any binder, any properties)
Load a configuration binder object according to passed in type. |
any
|
buildInstance(any<Mapping> mapping, [struct initArguments='[runtime expression]'])
Build an instance, this is called from registered scopes only as they provide locking and transactions. |
Injector
|
clearSingletons()
Clear the singleton cache. |
Injector
|
configure(any<Binder> binder, struct properties)
Configure this injector for operation, called by the init(). |
private Injector
|
configureCacheBox(struct config)
Configure a standalone version of cacheBox for persistence. |
private Injector
|
configureEventManager()
Configure a standalone version of a WireBox Event Manager. |
private Injector
|
configureLogBox(any configPath)
Configure a standalone version of logBox for logging. |
boolean
|
containsInstance(any name)
Checks if this injector can locate a model instance or not. |
private Injector
|
doScopeRegistration([any scopeInfo='[runtime expression]'])
Register this injector on a user specified scope. |
string
|
getAsyncManager()
|
string
|
getBinder()
|
string
|
getCacheBox()
|
Injector
|
getChildInjector(any name)
Get a child injector from this injector. |
array
|
getChildInjectorNames()
Get an array of all the registered child injectors in this injector. |
string
|
getChildInjectors()
|
string
|
getColdbox()
|
string
|
getEventManager()
|
string
|
getEventStates()
|
string
|
getInjectorID()
|
any
|
getInstance([any name], [struct initArguments='[runtime expression]'], [any dsl], [any targetObject=''], [any injector])
Locates, Creates, Injects and Configures an object model instance. |
string
|
getLog()
|
string
|
getLogBox()
|
any<BeanPopulator>
|
getObjectPopulator()
Get an object populator useful for populating objects from JSON,XML, etc. |
any<Injector>
|
getParent()
Get a reference to the parent injector instance, else an empty simple string meaning nothing is set. |
any
|
getScope(any scope)
Get a registered scope in this injector by name. |
struct
|
getScopeRegistration()
Get the structure of scope registration information. |
string
|
getScopeStorage()
|
string
|
getScopes()
|
string
|
getTaskScheduler()
|
string
|
getUtility()
|
string
|
getVersion()
|
boolean
|
hasChildInjector(any name)
Verify if a child injector has been registered by name. |
private Injector
|
injectTarget(any target, any propertyName, any propertyObject, any scope, any argName)
Inject a model object with dependencies via setters or property injections. |
boolean
|
isCacheBoxLinked()
Checks if CacheBox is linked. |
boolean
|
isColdBoxLinked()
Checks if Coldbox application context is linked. |
any
|
locateInstance(any name)
Tries to locate a specific instance by scanning all scan locations and returning the instantiation path. |
any<Injector>
|
locateScopedSelf()
Return a self reference using the scoped registration, mostly used by providers or scope widening objects. |
private Injector
|
processAfterCompleteDI(any targetObject, any DICompleteMethods)
Process after DI completion routines. |
private Injector
|
processInjection(any targetObject, any DIData, any targetID)
Process property and setter injection. |
private Injector
|
processMixins(any targetObject, any mapping)
Process mixins on the selected target. |
private Injector
|
processProviderMethods(any targetObject, any mapping)
Process provider methods on the selected target. |
Injector
|
registerChildInjector(any name, any child)
Register a child injector instance with this injector and set this injector as a parent of the child. |
Injector
|
registerDSL(any namespace, any path)
A direct way of registering custom DSL namespaces. |
Injector
|
registerListener(any listener)
Register all the configured listeners in the configuration file. |
private Injector
|
registerListeners()
Register all the configured listeners in the configuration file. |
any
|
registerNewInstance(any name, any instancePath)
Register a new requested mapping object instance thread safely and returns the mapping configured for this instance. |
private Injector
|
registerScopes()
Register all internal and configured WireBox Scopes. |
boolean
|
removeChildInjector(any name)
Remove a child injector from this injector. |
Injector
|
removeFromScope()
Remove the Injector from scope registration if enabled, else does nothing. |
any
|
setAsyncManager(any asyncManager)
|
any
|
setBinder(any binder)
|
any
|
setCacheBox(any cacheBox)
|
any
|
setChildInjectors(struct childInjectors)
|
any
|
setColdbox(any coldbox)
|
any
|
setEventManager(any eventManager)
|
any
|
setEventStates(array eventStates)
|
any
|
setInjectorID(any injectorID)
|
any
|
setLog(any log)
|
any
|
setLogBox(any logBox)
|
any
|
setParent(any<Injector> injector)
Link a parent Injector with this injector. |
any
|
setScopeStorage(any scopeStorage)
|
any
|
setScopes(any scopes)
|
any
|
setTaskScheduler(any taskScheduler)
|
any
|
setUtility(any utility)
|
any
|
setVersion(any version)
|
any
|
shutdown()
Shutdown the injector gracefully by calling the shutdown events internally. |
Methods inherited from class lucee.Component |
---|
None |
Constructor Detail |
---|
Constructor. If called without a configuration binder, then WireBox will instantiate the default configuration binder found in: coldbox.system.ioc.config.DefaultBinder
binder
- The WireBox binder or data CFC instance or instantiation path to configure this injector withproperties
- A structure of binding properties to passthrough to the Binder Configuration CFCcoldbox
- A coldbox application context that this instance of WireBox can be linked to, if not using it, we just ignore it.Property Detail |
---|
The Global AsyncManager
access
- publicrequired
- falsereturntype
- anysee
- coldbox.system.async.AsyncManagerserializable
- trueThe Configuration Binder object
access
- publicrequired
- falsereturntype
- anyserializable
- trueCacheBox Link
access
- publicrequired
- falsereturntype
- anyserializable
- trueAn injector can have children injectors referenced by a unique name
access
- publicrequired
- falsereturntype
- anyserializable
- trueColdBox Application Link
access
- publicrequired
- falsereturntype
- anyserializable
- trueEvent Manager Link
access
- publicrequired
- falsereturntype
- anyserializable
- trueConfigured Event States
access
- publicrequired
- falsereturntype
- anyserializable
- trueThe injector Unique ID
access
- publicrequired
- falsereturntype
- anyserializable
- trueLog Reference
access
- publicrequired
- falsereturntype
- anyserializable
- trueLogBox and Class Logger
access
- publicrequired
- falsereturntype
- anyserializable
- trueParent Injector
access
- publicrequired
- falsereturntype
- anyserializable
- trueScope Storages Utility
access
- publicrequired
- falsereturntype
- anyserializable
- trueLifeCycle Scopes
access
- publicrequired
- falsereturntype
- anyserializable
- trueThe logBox task scheduler executor
access
- publicrequired
- falsereturntype
- anysee
- coldbox.system.async.executors.ScheduledExecutorserializable
- trueColdBox Utility class
access
- publicrequired
- falsereturntype
- anyserializable
- trueWireBox Version
access
- publicrequired
- falsereturntype
- anyserializable
- trueMethod Detail |
---|
I wire up target objects with dependencies either by mappings or a-la-carte autowires
target
- The target object to wire upmapping
- The object mapping with all the necessary wiring metadata. Usually passed by scopes and not a-la-carte autowirestargetID
- A unique identifier for this target to wire up. Usually a class path or file path should do. If none is passed we will get the id from the passed target via introspection but it will slow down the wiringannotationCheck
- This value determines if we check if the target contains an autowire annotation in the cfcomponent tag: autowire=true|false, it will only autowire if that metadata attribute is set to true. The default is false, which will autowire anything automatically.Load a configuration binder object according to passed in type
binder
- The data CFC configuration instance, instantiation path or programmatic binder object to configure this injector withproperties
- A map of binding properties to passthrough to the Configuration CFCBuild an instance, this is called from registered scopes only as they provide locking and transactions
mapping
- The mapping to constructinitArguments
- The constructor structure of arguments to passthrough when initializing the instanceClear the singleton cache
Configure this injector for operation, called by the init(). You can also re-configure this injector programmatically, but it is not recommended.
binder
- The configuration binder object or path to configure this Injector instance withproperties
- A structure of binding properties to passthrough to the Configuration CFCConfigure a standalone version of cacheBox for persistence
config
- The cacheBox configuration data structureConfigure a standalone version of a WireBox Event Manager
Configure a standalone version of logBox for logging
configPath
Checks if this injector can locate a model instance or not
name
- The object name or alias to search for if this container can locate it or has knowledge of itRegister this injector on a user specified scope
scopeInfo
- The scope info struct: key, scopeGet a child injector from this injector
name
Get an array of all the registered child injectors in this injector
Locates, Creates, Injects and Configures an object model instance
name
- The mapping name or CFC instance path to try to build upinitArguments
- The constructor structure of arguments to passthrough when initializing the instancedsl
- The dsl string to use to retrieve the instance model object, mutually exclusive with 'nametargetObject
- The object requesting the dependency, usually only used by DSL lookupsinjector
- The child injector to use when retrieving the instanceGet an object populator useful for populating objects from JSON,XML, etc.
Get a reference to the parent injector instance, else an empty simple string meaning nothing is set
Get a registered scope in this injector by name
scope
- The scope nameGet the structure of scope registration information
Verify if a child injector has been registered by name
name
- The name of the child injector to checkInject a model object with dependencies via setters or property injections
target
- The target that will be injected with dependenciespropertyName
- The name of the property to injectpropertyObject
- The object to injectscope
- The scope to inject a property into, if any else empty means it is a setter callargName
- The name of the argument to send if setter injectionChecks if CacheBox is linked
Checks if Coldbox application context is linked
Tries to locate a specific instance by scanning all scan locations and returning the instantiation path. If model not found then the returned instantiation path will be empty
name
- The model instance name to locateReturn a self reference using the scoped registration, mostly used by providers or scope widening objects
Process after DI completion routines
targetObject
- The target object to do some goodness onDICompleteMethods
- The array of DI completion methods to callProcess property and setter injection
targetObject
- The target object to do some goodness onDIData
- The DI data to usetargetID
- The target ID to process injectionsProcess mixins on the selected target
targetObject
- The target object to do some goodness onmapping
- The target mappingProcess provider methods on the selected target
targetObject
- The target object to do some goodness onmapping
- The target mappingRegister a child injector instance with this injector and set this injector as a parent of the child.
name
- The unique name to register the child withchild
- The child Injector instance to registerA direct way of registering custom DSL namespaces
namespace
- The namespace you would like to registerpath
- The instantiation path to the CFC that implements this scope, it must have an init() method and implement: coldbox.system.ioc.dsl.IDSLBuilderRegister all the configured listeners in the configuration file
listener
- The listener to registerRegister all the configured listeners in the configuration file
Register a new requested mapping object instance thread safely and returns the mapping configured for this instance
name
- The name of the mapping to registerinstancePath
- The path of the mapping to registerRegister all internal and configured WireBox Scopes
Remove a child injector from this injector
name
- The unique name of the child injector to removeRemove the Injector from scope registration if enabled, else does nothing
asyncManager
binder
cacheBox
childInjectors
coldbox
eventManager
eventStates
injectorID
log
logBox
Link a parent Injector with this injector
injector
- A WireBox Injector to assign as a parent to this InjectorscopeStorage
scopes
taskScheduler
utility
version
Shutdown the injector gracefully by calling the shutdown events internally.