The module configuration object is also treated as an Interceptor once it is created and configured.
There are two life-cycle callback events you can declare in your ModuleConfig.cfc
:
onLoad()
: Called when the module is loaded and activatedonUnLoad()
: Called when the module is unloaded from memory
This gives you great hooks for you to do bootup and shutdown commands for this specific module. You can build a ContentBox or Wordpress like application very easily all built in to the developing platform.
function onLoad(){
// Register some tables in my database and activate some features
controller.getWireBox().getInstance('MyModuleService').activate();
log.info( 'Module #this.title# loaded correctly' );
}
function onUnLoad(){
// Cleanup some stuff and logit
controller.getWireBox().getInstance('MyModuleService').shutdown();
// Log we unloaded
log.info( 'My module unloaded successfully!' );
}
Also, remember that the configuration object itself is an interceptor so you can declare all of the framework's interception points in the configuration object and they will be registered as interceptors.
function preProcess(event, interceptData){
// I just intercepted ALL incoming requests to the application
log.info('The event executed is #arguments.event.getCurrentEvent()#');
}
This is a powerful feature, you can create an entire module based on a single CFC and just treat it as an interceptor. So get your brain into gear and let the gas run, you are going for a ride baby!