一般动作
Grails开发过程中,可以编写工程或者插件的 Bootstrap 类在启动或者停止应用的时候执行一些代码,以实现系统初始化等功能,如:
但是在工程启动过程中,除了工程的 BootStrap 类固定最后执行的,其他插件中的 Bootstrap 类的执行顺序却是乱序的,简单分析一下Grails 2.2.1的源码:
不知到是 Grails 的缺陷还是有意为之,当多个插件之间有依赖关系时(如XxxxGrailsPlugin.groovy 中的 dependsOn 或 loadAfter 设置),无序执行 Bootstrap 可能会导致不可预知的问题。
因此,在 BroToolkit 中,我们对上述两个Grails源码稍作修改,先按照插件依赖关系将 Bootstrap 类重新排序(暂未考虑 loadBefore 的关系),init时顺序执行、destroy时逆序执行。