Servlets和过滤器在Grails中注册为Spring Beans而不是web.xml

krs*_*ynx 3 grails spring

在Grails '从2.x升级到3.0.6'文档中,已经注意到"新的servlet和过滤器可以分别注册为Spring bean或ServletRegistrationBean和FilterRegistrationBean",但是在这个问题上没有其他说明.

我想知道是否有人对如何正确地执行此操作有任何好的意见(即,使用包含servlet上下文来加载bean的init/BootStrap.groovy,而不是conf/spring中的bean)或者可能有一些预定义的Spring这样做的方式很明显而且我很遗憾.

注意:我正在尝试将spring-ws集成到Grails 3.0.6中.

Bur*_*ith 5

您应该doWithSpring为插件或grails-app/conf/spring/resources.groovy应用程序执行此操作.由于Grails 3基于Spring Boot,因此您也可以使用@Bean方法.

当应用程序上下文启动时,Spring会查找ServletRegistrationBeans,FilterRegistrationBeans等,并使用其配置的属性为您在servlet容器中进行编程注册.

Grails源代码中有一些例子.ControllersGrailsPlugin注册了一些过滤器(例如这里),主调度程序servlet 在这里注册.

Spring Boot文档中有一些文档虽然它偏向于@Bean方法,但您可以使用任何方法来定义bean.