Add WebMvcRegistrations for custom MVC components
Add `WebMvcRegistrations` which can be used to provide custom instances of `RequestMappingHandlerMapping`, `RequestMappingHandlerAdapter` and `ExceptionHandlerExceptionResolver`. Those instances are then used and processed by the Boot MVC configuration. Prior to this commit, developers could provide their custom instances of MVC infrstructure components such as `RequestMappingHandlerMapping` and `RequestMappingHandlerAdapter` only by using advanced configuration strategies. Those advanced configurations involved subclassing `WebMvcConfigurationSupport` which effectively turns off MVC auto-configuration in Boot. Fixes gh-5004 Closes gh-6100pull/6145/head
parent
5250fb127a
commit
6dc0ecb182
@ -0,0 +1,59 @@
|
||||
/*
|
||||
* Copyright 2012-2016 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package org.springframework.boot.autoconfigure.web;
|
||||
|
||||
import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport;
|
||||
import org.springframework.web.servlet.mvc.method.annotation.ExceptionHandlerExceptionResolver;
|
||||
import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter;
|
||||
import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping;
|
||||
|
||||
/**
|
||||
* Interface to register key components of the {@link WebMvcConfigurationSupport} in place
|
||||
* of the default ones provided by Spring MVC.
|
||||
* <p>
|
||||
* All custom instances are later processed by Boot and Spring MVC configurations. A
|
||||
* single instance of this component should be registered, otherwise making it impossible
|
||||
* to choose from redundant MVC components.
|
||||
*
|
||||
* @author Brian Clozel
|
||||
* @since 1.4.0
|
||||
* @see org.springframework.boot.autoconfigure.web.WebMvcAutoConfiguration.EnableWebMvcConfiguration
|
||||
*/
|
||||
public interface WebMvcRegistrations {
|
||||
|
||||
/**
|
||||
* Return the custom {@link RequestMappingHandlerMapping} that should be used and
|
||||
* processed by the MVC configuration.
|
||||
* @return the custom {@link RequestMappingHandlerMapping} instance
|
||||
*/
|
||||
RequestMappingHandlerMapping getRequestMappingHandlerMapping();
|
||||
|
||||
/**
|
||||
* Return the custom {@link RequestMappingHandlerAdapter} that should be used and
|
||||
* processed by the MVC configuration.
|
||||
* @return the custom {@link RequestMappingHandlerAdapter} instance
|
||||
*/
|
||||
RequestMappingHandlerAdapter getRequestMappingHandlerAdapter();
|
||||
|
||||
/**
|
||||
* Return the custom {@link ExceptionHandlerExceptionResolver} that should be used and
|
||||
* processed by the MVC configuration.
|
||||
* @return the custom {@link ExceptionHandlerExceptionResolver} instance
|
||||
*/
|
||||
ExceptionHandlerExceptionResolver getExceptionHandlerExceptionResolver();
|
||||
|
||||
}
|
@ -0,0 +1,47 @@
|
||||
/*
|
||||
* Copyright 2012-2016 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package org.springframework.boot.autoconfigure.web;
|
||||
|
||||
import org.springframework.web.servlet.mvc.method.annotation.ExceptionHandlerExceptionResolver;
|
||||
import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter;
|
||||
import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping;
|
||||
|
||||
/**
|
||||
* An implementation of {@link WebMvcRegistrations} with empty methods allowing
|
||||
* sub-classes to override only the methods they're interested in.
|
||||
*
|
||||
* @author Brian Clozel
|
||||
* @since 1.4.0
|
||||
*/
|
||||
public class WebMvcRegistrationsAdapter implements WebMvcRegistrations {
|
||||
|
||||
@Override
|
||||
public RequestMappingHandlerMapping getRequestMappingHandlerMapping() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public RequestMappingHandlerAdapter getRequestMappingHandlerAdapter() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ExceptionHandlerExceptionResolver getExceptionHandlerExceptionResolver() {
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in New Issue