Injection DSL
The injection DSL is a domain specific language that denotes what to inject in the current placeholder: property, argument, or method via the inject annotation. This injection DSL not only can it be used via annotations but also via our mapping DSL whenever a dsl argument can be used. This DSL is constructed by joining words separated by a : colon. The first part of this string is what we will denote as the injection DSL Namespace.
inject="{namespace}:extra:extra:extra"Property Annotation
Every property can be annotated with our injection annotations:
inject: The injection DSLscope: The visibility scope to inject the dependency into. By default it injects intovariablesscope
property name="service" inject="id:MyService";
property name="TYPES" inject="id:CustomTypes" scope="this";
property name="roles" inject="id:RoleService:getRoles" scope="instance";property name="service" inject="id:MyService";
property name="TYPES" inject="id:CustomTypes" scope="this";
property name="roles" inject="id:RoleService:getRoles" scope="instance";Constructor Argument Annotation
You can also annotate constructor arguments with the inject annotation:
/**
* @myService.inject UserService
* @cache.inject cachebox:default
*/
function init( required myService, required cache ){
}/**
* @myService.inject UserService
* @cache.inject cachebox:default
*/
function init( required myService, required cache ){
}Setter Method Annotation
You can also annotate setter methods with the inject annotation to provide injections:
WireBox offers a wide gamut of annotation namespaces you can use in your BoxLang and CFML applications and ColdBox applications. However, we took it a step further and allowed you to create your own custom DSL namespaces making your annotations come alive!
Last updated
Was this helpful?