[grails 3]:替换插件描述符上的 doWithWebDescriptor?

[grails 3]: Replacement of doWithWebDescriptor on Plugin descriptor?

我们正在尝试将现有的 grails 2.5 应用程序移动到更新版本的 grails。为此,采用的策略是先升级到 grails 3.3.11(3.x 最新版本),然后再升级到 grails 4.

对于 grails 2.5.6 应用程序的功能之一,我发现在任何地方都没有任何记录,或者我可能错过了文档中的那部分内容!它是关于插件描述符的 doWithWebDescriptor。通过这个闭包,我们可以根据一些规则动态更新 web.xml。

升级到grails 3后,发现doWithWebDescriptor不行了。它没有初始化它应该执行的任务(就 grails 2.5 而言)。后来发现grails 3.0之后就没有文档了documentation.

如果 doWithWebDescriptor 被删除,那么用 grails 3 或最新的 grails 4 版本最合适的替代品是什么?如果它仍然工作正常并且 grails 3 需要一些与配置相关的更改,那么请指点我那部分。

更新:

我们需要doWithWebDescriptor的原因是,我们正在尝试添加基于插件的servlet。实际上我们有几个插件用于应用程序中的不同模块。并非项目中包含所有插件。基于选择的模块,我们正在向应用程序添加插件。因此,如果包含一个插件,那么我们需要将 servlet 和一个过滤器添加到 web.xml.

谢谢。

Reason why we need doWithWebDescriptor is that, we are trying to add servlet based on the plugin.

您可以通过在应用程序上下文中注册 ServletRegistrationBean 来添加一个 servlet。您可以在插件的 doWithSpring 方法或应用程序的 resources.groovy 方法中执行此操作。示例:

Closure doWithSpring() {{->
  myServlet(ServletRegistrationBean, new MyServlet(), "/myServlet/*") {
    loadOnStartup = 2
  }
}}

我们已在 18.5 挂接到运行时配置 部分的 http://docs.grails.org/3.3.11/guide/plugins.html#hookingIntoRuntimeConfiguration.

中对此进行了记录