WireBox : Dependency Injection & AOP
2.x
2.x
  • Introduction
  • Intro
    • Introduction
      • What's New With 5.5.0
      • What's New With 5.4.0
      • What's New With 5.3.0
      • What's New With 5.0.0
      • What's New With 2.1.0
      • What's New With 2.0.0
      • About This Book
      • Author
  • Getting Started
    • Overview
    • Installing WireBox
    • Getting Jiggy Wit It!
      • Instance Creations
      • Binder Introduction
      • Scoping
      • Eager Init
      • How WireBox Resolves Dependencies
  • Configuration
    • Configuring WireBox
      • Binder Configuration Properties
      • Binder Environment Properties
      • ColdBox Enhanced Binder
      • Types & Scopes
      • Data Configuration Settings
      • Programmatic Configuration
    • Mapping DSL
      • Mapping Initiators
      • Mapping Destinations
      • MapDirectory() Influence & Filters
      • Persistence DSL
      • Dependencies DSL
        • Mapping Extra Attributes
      • Mapping DSL Examples
      • Influence Instances at Runtime
      • Processing Mappings
    • Component Annotations
      • Persistence Annotations
      • CacheBox Annotations
    • Parent Object Definitions
  • Usage
    • WireBox Injector
      • Injector Constructor Arguments
      • Injection Idioms
      • Common Methods
    • Injection DSL
      • ID-Model-Empty Namespace
      • Provider Namespace
      • WireBox Namespace
      • CacheBox Namespace
      • EntityService Namespace
      • LogBox Namespace
      • Java Namespace
      • ColdBox Namespace
    • WireBox Event Model
      • WireBox Events
      • WireBox Listeners
        • ColdBox Mode Listener
        • Standalone Mode Listener
  • Advanced Topics
    • Providers
      • Custom Providers
      • toProvider() closures
      • Virtual Provider Injection DSL
      • Virtual Provider Mapping
      • Virtual Provider Lookup Methods
      • Provider onMissingMethod Proxy
      • Scope Widening Injection
    • Virtual Inheritance
    • Runtime Mixins()
    • Object Persistence & Thread Safety
    • ORM Entity Injection
    • WireBox Object Populator
      • populateFromXML
      • populateFromQuery
      • populateFromStruct
      • populateFromQueryWithPrefix
      • populateFromJSON
  • Extending WireBox
    • Custom DSL
      • The DSL Builder Interface
      • Registering a Custom DSL
    • Custom Scopes
      • The Scope Interface
      • Scoping Process
      • Registering a Custom Scope
    • WireBox Injector Interface
  • Aspect Oriented Programming
    • AOP Intro
      • Overview
        • AOP Vocabulary
      • Activate The AOP Listener
      • Create Your Aspect
        • MethodInvocation Useful Methods
        • MethodLogger Aspect
      • Aspect Registration
      • Aspect Binding
      • Auto Aspect Binding
        • ClassMatcher Annotation DSL
        • MethodMatcher Annotation DSL
      • Included Aspects
        • CFTransaction
        • HibernateTransaction
        • MethodLogger
      • Summary
Powered by GitBook
On this page

Was this helpful?

Edit on Git
Export as PDF
  1. Usage
  2. Injection DSL

ID-Model-Empty Namespace

The default namespace is not specifying one. This namespace is used to retreive either named mappings or full component paths.

DSL

Description

empty

Same as saying id. Get a mapped instance with the same name as defined in the property, argument or setter method.

id

Get a mapped instance with the same name as defined in the property, argument or setter method.

id:{name}

Get a mapped instance by using the second part of the DSL as the mapping name.

id:{name}:{method}

Get the {name} instance object, call the {method} and inject the results

model

Get a mapped instance with the same name as defined in the property, argument or setter method.

model:{name}

Get a mapped instance by using the second part of the DSL as the mapping name.

model:{name}:{method}

Get the {name} instance object, call the {method} and inject the results

@module

Get the object from a specific module. The name of the alias is from the property used

// Let's assume we have mapped a few objects called: UserService, SecurityService and RoleService

// Empty inject, use the property name, argument name or setter name
property name="userService" inject;

// Using the name of the mapping as the value of the inject
property name="security" inject="SecurityService";

// Using the full namespace
property name="userService" inject="id:UserService";
property name="userService" inject="model:UserService";

// Simple factory method
property name="roles" inject="id:RoleService:getRoles";

// Module Injection Shortcut
property name="MyService" inject="@myModule";

CFC Instantiation Order

When WireBox builds CFC instances, it is important to know the order of operations. This controls when injected dependencies are available for you to use.

  1. Component is instantiated with createObject()

  2. CF automatically runs the pseudo constructor (any code outside the a method declaration)

  3. The init() method is called (if it exists), passing any constructor args

  4. Property (mixin) and setting injection happens

  5. The onDIComplete() method is called (if it exists)

Based on that order, you can see that injected dependencies (except constructor ones) are not available yet to use in the init() and you must wait to use them in the onDIComplete() method.

PreviousInjection DSLNextProvider Namespace

Last updated 4 years ago

Was this helpful?