我们有一些在整个Coldbox应用程序中使用的插件。
有没有办法全局注入这些,而无需为每个人手动指定属性?
我查看了Wirebox docs,但看不到任何相关内容。 (完全有可能我忽略了一些东西;这是一个漫长而密集的页面。)
似乎装饰FrameworkSupertype可能是一种方法,但我找不到任何提及。
答案 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拦截器,但你应该找到最适合自己的拦截器并运行它!