如何将Coldbox插件注入每个处理程序?

时间:2013-07-11 09:59:52

标签: coldfusion coldbox wirebox

我们有一些在整个Coldbox应用程序中使用的插件。

有没有办法全局注入这些,而无需为每个人手动指定属性?

我查看了Wirebox docs,但看不到任何相关内容。 (完全有可能我忽略了一些东西;这是一个漫长而密集的页面。)

似乎装饰FrameworkSupertype可能是一种方法,但我找不到任何提及。

1 个答案:

答案 0 :(得分:2)

我会指出Stack Overflow还需要登录并键入主题:)

有几种方法可以实现这一点,老实说任何方式都有效。

第一个是简单地在你想要使用它的地方调用getPlugin(“myPlugin”),因为getPlugin()方法在每个处理程序,视图和布局中都可用。

第二种方法是使用mixin注入并将以下内容放在每个处理程序的顶部,然后从变量范围访问插件: property name =“myPlugin”inject =“coldbox:plugin:myPlugin”;

第三个是让所有处理程序扩展像Joel建议的基本处理程序,并将DI属性放在基本处理程序中。

您提到的第四个是使用AOP方面并将其绑定到处理程序目录中每个CFC的init()方法,并将插件设置为变量范围作为“后”建议。

第五个选项是使用拦截器来监听afterHandlerCreation公告,并手动将插件注入oHandler对象。

第六种可能性是使用requestStartHandler或preProcess拦截点,并在私有请求集合(prc)中对您的插件进行引用,这也将在视图和布局中可用。

有很多选择,老实说,甚至可能都不是全部。就个人而言,我可能会使用afterHandlerCreation拦截器,但你应该找到最适合自己的拦截器并运行它!