在哪里正确初始化Groovy元类?

在哪里正确初始化Groovy元类?,groovy,initialization,expandometaclass,Groovy,Initialization,Expandometaclass,在Groovy应用程序中,如果您想初始化元类,那么将这些初始化放在哪里最合适?在Grails应用程序中,我使用了Bootstrap.groovy文件。对于任意的Groovy应用程序有类似的功能吗 编辑:为了澄清这一点,我正在寻找一种非侵入式的方法,以确保在运行主应用程序时以及在相关代码的单元测试中调用它。对于标准groovy应用程序,没有什么比Bootstrap.groovy更好的了,但这并不能阻止你在你的应用程序中做同样的事情,让一个类或方法在启动时被调用,你可以添加元类初始化 从以下评论中

在Groovy应用程序中,如果您想初始化元类,那么将这些初始化放在哪里最合适?在Grails应用程序中,我使用了Bootstrap.groovy文件。对于任意的Groovy应用程序有类似的功能吗


编辑:为了澄清这一点,我正在寻找一种非侵入式的方法,以确保在运行主应用程序时以及在相关代码的单元测试中调用它。

对于标准groovy应用程序,没有什么比Bootstrap.groovy更好的了,但这并不能阻止你在你的应用程序中做同样的事情,让一个类或方法在启动时被调用,你可以添加元类初始化


从以下评论中添加:

您可以为希望修饰的每个类编写一个DelegatingMetaClass,并将其放入包
groovy.runtime.metaclass.[YOURPACKAGE].[YOURCLASS]metaclass


要做到这一点(页面上的第2项)

是否有一种非侵入性的方法来保证在运行主应用程序以及相关代码的单元测试时调用它?@Alan您可以为每个要修饰的类编写一个DelegatingMetaClass,并将其放在包
groovy.runtime.metaclass中。[YOURPACKAGE][YOURCLASS]元类
(页面第2项)@tim IMO,上述评论应移至答案中itself@tim谢谢,我自己也会这么做,但是我对编辑Groovy联盟中领先我的用户的帖子有点害羞:)我通过向上投票这个答案,进一步阻碍了我夺回合法位置的目标。这个方法是否也适用于ExpandoMetaClass初始化?