lucee.Component coldbox.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. 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
|
binder
The Configuration Binder object.
|
true
|
false
|
|
any
|
cacheBox
CacheBox Link.
|
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
|
javaSystem
Java System.
|
true
|
false
|
|
any
|
log
Log Reference.
|
true
|
false
|
|
any
|
logBox
LogBox and Class Logger.
|
true
|
false
|
|
any
|
parent
Parent Injector.
|
true
|
false
|
|
any
|
scopes
LifeCycle Scopes.
|
true
|
false
|
|
any
|
scopeStorage
Scope Storages Utility.
|
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()
Register this injector on a user specified scope. |
string
|
getBinder()
|
string
|
getCacheBox()
|
string
|
getColdbox()
|
string
|
getEventManager()
|
string
|
getEventStates()
|
string
|
getInjectorID()
|
any
|
getInstance([any name], [any dsl], [struct initArguments='[runtime expression]'], [any targetObject=''])
Locates, Creates, Injects and Configures an object model instance. |
string
|
getJavaSystem()
|
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
|
getScopes()
|
string
|
getScopeStorage()
|
any<Util>
|
getUtil()
Return the core util object. |
string
|
getUtility()
|
string
|
getVersion()
|
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
|
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. |
Injector
|
removeFromScope()
Remove the Injector from scope registration if enabled, else does nothing. |
any
|
setBinder(any binder)
|
any
|
setCacheBox(any cacheBox)
|
any
|
setColdbox(any coldbox)
|
any
|
setEventManager(any eventManager)
|
any
|
setEventStates(array eventStates)
|
any
|
setInjectorID(any injectorID)
|
any
|
setJavaSystem(any javaSystem)
|
any
|
setLog(any log)
|
any
|
setLogBox(any logBox)
|
any
|
setParent(any<Injector> injector)
Link a parent Injector with this injector. |
any
|
setScopes(any scopes)
|
any
|
setScopeStorage(any scopeStorage)
|
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 Configuration Binder object
access
- publicrequired
- falsereturntype
- anyserializable
- trueCacheBox Link
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
- trueJava System
access
- publicrequired
- falsereturntype
- anyserializable
- trueLog Reference
access
- publicrequired
- falsereturntype
- anyserializable
- trueLogBox and Class Logger
access
- publicrequired
- falsereturntype
- anyserializable
- trueParent Injector
access
- publicrequired
- falsereturntype
- anyserializable
- trueLifeCycle Scopes
access
- publicrequired
- falsereturntype
- anyserializable
- trueScope Storages Utility
access
- publicrequired
- falsereturntype
- anyserializable
- 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
containsInstance
in interface
IInjector
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
Locates, Creates, Injects and Configures an object model instance
getInstance
in interface
IInjector
name
- The mapping name or CFC instance path to try to build updsl
- The dsl string to use to retrieve the instance model object, mutually exclusive with 'nameinitArguments
- The constructor structure of arguments to passthrough when initializing the instancetargetObject
- The object requesting the dependency, usually only used by DSL lookupsGet 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
getParent
in interface
IInjector
Get a registered scope in this injector by name
scope
- The scope nameGet the structure of scope registration information
Return the core util object
Inject 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
DIData
- 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 mappingA 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 the Injector from scope registration if enabled, else does nothing
binder
cacheBox
coldbox
eventManager
eventStates
injectorID
javaSystem
log
logBox
Link a parent Injector with this injector
setParent
in interface
IInjector
injector
- A WireBox Injector to assign as a parent to this Injectorscopes
scopeStorage
utility
version
Shutdown the injector gracefully by calling the shutdown events internally.
shutdown
in interface
IInjector