0

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

有没有一种方法可以全局注入这些而无需手动指定每个属性?

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

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

4

1 回答 1

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 拦截器,但您应该找到最适合您的拦截器并使用它运行!

于 2013-07-11T17:29:58.417 回答