Skip to content

Commit 4634e09

Browse files
committed
Move DispatcherServlet to ControllersAutoConfiguration
1 parent 79ca9e5 commit 4634e09

File tree

2 files changed

+26
-14
lines changed

2 files changed

+26
-14
lines changed

grails-plugin-controllers/src/main/groovy/org/grails/plugins/web/controllers/ControllersAutoConfiguration.java

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,28 @@
11
package org.grails.plugins.web.controllers;
22

33
import grails.config.Settings;
4+
import grails.core.GrailsApplication;
45
import jakarta.servlet.DispatcherType;
56
import jakarta.servlet.Filter;
67
import jakarta.servlet.MultipartConfigElement;
78
import org.grails.web.config.http.GrailsFilters;
89
import org.grails.web.filters.HiddenHttpMethodFilter;
10+
import org.grails.web.servlet.mvc.GrailsDispatcherServlet;
911
import org.grails.web.servlet.mvc.GrailsWebRequestFilter;
1012
import org.springframework.beans.factory.annotation.Value;
1113
import org.springframework.boot.autoconfigure.AutoConfiguration;
1214
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
1315
import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication;
16+
import org.springframework.boot.autoconfigure.web.servlet.DispatcherServletRegistrationBean;
1417
import org.springframework.boot.autoconfigure.web.servlet.HttpEncodingAutoConfiguration;
1518
import org.springframework.boot.autoconfigure.web.servlet.WebMvcAutoConfiguration;
1619
import org.springframework.boot.web.servlet.FilterRegistrationBean;
1720
import org.springframework.boot.web.servlet.filter.OrderedCharacterEncodingFilter;
1821
import org.springframework.context.ApplicationContext;
1922
import org.springframework.context.annotation.Bean;
23+
import org.springframework.util.ClassUtils;
2024
import org.springframework.web.filter.CharacterEncodingFilter;
25+
import org.springframework.web.servlet.DispatcherServlet;
2126
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
2227
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
2328

@@ -54,6 +59,9 @@ public class ControllersAutoConfiguration {
5459
@Value("${" + Settings.CONTROLLERS_UPLOAD_FILE_SIZE_THRESHOLD + ":0}")
5560
private int fileSizeThreshold;
5661

62+
@Value("${" + Settings.WEB_SERVLET_PATH + ":#{null}}")
63+
String grailsServletPath;
64+
5765
@Bean
5866
@ConditionalOnMissingBean(CharacterEncodingFilter.class)
5967
public CharacterEncodingFilter characterEncodingFilter() {
@@ -100,6 +108,24 @@ public MultipartConfigElement multipartConfigElement() {
100108
return new MultipartConfigElement(uploadTmpDir, maxFileSize, maxRequestSize, fileSizeThreshold);
101109
}
102110

111+
@Bean
112+
public DispatcherServlet dispatcherServlet() {
113+
return new GrailsDispatcherServlet();
114+
}
115+
116+
@Bean
117+
public DispatcherServletRegistrationBean dispatcherServletRegistration(GrailsApplication application, DispatcherServlet dispatcherServlet, MultipartConfigElement multipartConfigElement) {
118+
if (grailsServletPath == null) {
119+
boolean isTomcat = ClassUtils.isPresent("org.apache.catalina.startup.Tomcat", application.getClassLoader());
120+
grailsServletPath = isTomcat ? Settings.DEFAULT_TOMCAT_SERVLET_PATH : Settings.DEFAULT_WEB_SERVLET_PATH;
121+
}
122+
DispatcherServletRegistrationBean dispatcherServletRegistration = new DispatcherServletRegistrationBean(dispatcherServlet, grailsServletPath);
123+
dispatcherServletRegistration.setLoadOnStartup(2);
124+
dispatcherServletRegistration.setAsyncSupported(true);
125+
dispatcherServletRegistration.setMultipartConfig(multipartConfigElement);
126+
return dispatcherServletRegistration;
127+
}
128+
103129
@Bean
104130
public GrailsWebMvcConfigurer webMvcConfig() {
105131
return new GrailsWebMvcConfigurer(resourcesCachePeriod, resourcesEnabled, resourcesPattern);

grails-plugin-controllers/src/main/groovy/org/grails/plugins/web/controllers/ControllersGrailsPlugin.groovy

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -23,16 +23,12 @@ import groovy.util.logging.Slf4j
2323
import org.grails.core.artefact.ControllerArtefactHandler
2424
import org.grails.plugins.web.servlet.context.BootStrapClassRunner
2525
import org.grails.web.errors.GrailsExceptionResolver
26-
import org.grails.web.servlet.mvc.GrailsDispatcherServlet
2726
import org.grails.web.servlet.mvc.TokenResponseActionResultTransformer
2827
import org.grails.web.servlet.view.CompositeViewResolver
2928
import org.springframework.beans.factory.support.AbstractBeanDefinition
30-
import org.springframework.boot.autoconfigure.web.servlet.DispatcherServletRegistrationBean
3129
import org.springframework.context.ApplicationContext
32-
import org.springframework.util.ClassUtils
3330
import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter
3431
import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping
35-
import jakarta.servlet.MultipartConfigElement
3632

3733
/**
3834
* Handles the configuration of controllers for Grails.
@@ -57,8 +53,6 @@ class ControllersGrailsPlugin extends Plugin {
5753
def config = application.config
5854

5955
boolean useJsessionId = config.getProperty(Settings.GRAILS_VIEWS_ENABLE_JSESSIONID, Boolean, false)
60-
boolean isTomcat = ClassUtils.isPresent("org.apache.catalina.startup.Tomcat", application.classLoader)
61-
String grailsServletPath = config.getProperty(Settings.WEB_SERVLET_PATH, isTomcat ? Settings.DEFAULT_TOMCAT_SERVLET_PATH : Settings.DEFAULT_WEB_SERVLET_PATH)
6256

6357
if (!Boolean.parseBoolean(System.getProperty(Settings.SETTING_SKIP_BOOTSTRAP))) {
6458
bootStrapClassRunner(BootStrapClassRunner)
@@ -80,14 +74,6 @@ class ControllersGrailsPlugin extends Plugin {
8074
annotationHandlerMapping(RequestMappingHandlerMapping, interceptorsClosure)
8175
annotationHandlerAdapter(RequestMappingHandlerAdapter)
8276

83-
// add the dispatcher servlet
84-
dispatcherServlet(GrailsDispatcherServlet)
85-
dispatcherServletRegistration(DispatcherServletRegistrationBean, ref("dispatcherServlet"), grailsServletPath) {
86-
loadOnStartup = 2
87-
asyncSupported = true
88-
multipartConfig = ref('multipartConfigElement')
89-
}
90-
9177
for (controller in application.getArtefacts(ControllerArtefactHandler.TYPE)) {
9278
log.debug "Configuring controller $controller.fullName"
9379
if (controller.available) {

0 commit comments

Comments
 (0)