WebMvcConfigurer
WebMvcConfigurer
@Configuration + WebMvcConfigurer接口
在spring中我們可以通過用java代碼配置bean,不使用xml寫bean,改成使用java代碼來實現(xiàn)javabean的配置。如下:
@Configuration //定義是spring的bean配置類 @ComponentScan("com.ex.test") //掃描包 @Import(other.class) //導入config public class beanconfig{@Beanpublic User user(){return new User();} }而WebMvcConfigurer配置類其實是Spring內(nèi)部的一種配置方式,可以自定義一些Handler,Interceptor,ViewResolver,MessageConverter等等的東西對springmvc框架進行配置。如下:
@Configuration //定義是spring的bean配置類 public class Mymvcconfig implements WebMvcConfigurer{@Overridepublic void addInterceptors(InterceptorRegistry registry) {registry.addInterceptor(new MyInterceptor()).addPathPatterns("/**").excludePathPatterns("/emp/toLogin","/emp/login","/js/**","/css/**","/images/**");} }WebMvcConfigurer接口
public interface WebMvcConfigurer {void configurePathMatch(PathMatchConfigurer var1);void configureContentNegotiation(ContentNegotiationConfigurer var1);void configureAsyncSupport(AsyncSupportConfigurer var1);void configureDefaultServletHandling(DefaultServletHandlerConfigurer var1);void addFormatters(FormatterRegistry var1);void addInterceptors(InterceptorRegistry var1);void addResourceHandlers(ResourceHandlerRegistry var1);void addCorsMappings(CorsRegistry var1);void addViewControllers(ViewControllerRegistry var1);void configureViewResolvers(ViewResolverRegistry var1);void addArgumentResolvers(List<HandlerMethodArgumentResolver> var1);void addReturnValueHandlers(List<HandlerMethodReturnValueHandler> var1);void configureMessageConverters(List<HttpMessageConverter<?>> var1);void extendMessageConverters(List<HttpMessageConverter<?>> var1);void configureHandlerExceptionResolvers(List<HandlerExceptionResolver> var1);void extendHandlerExceptionResolvers(List<HandlerExceptionResolver> var1);Validator getValidator();MessageCodesResolver getMessageCodesResolver(); }addViewControllers添加一個視圖解析器
通過實現(xiàn)addViewControllers向mvc添加一個視圖解析器(添加一個頁面跳轉(zhuǎn))
@Configuration //定義是spring的bean配置類 public class Mymvcconfig implements WebMvcConfigurer{@Overridepublic void addViewControllers(ViewControllerRegistry registry) {registry.addViewController("/toLogin").setViewName("login");} }@EnableWebMvc
@EnableWebMvc是使用Java 注解快捷配置Spring Webmvc的一個注解。在EnableWebMvc導入了一個DelegatingWebMvcConfiguration類,而DelegatingWebMvcConfiguration繼承了WebMvcConfigurationSupport。
而WebMvcAutoConfiguration類的注解@ConditionalOnMissingBean({WebMvcConfigurationSupport.class}),定義了WebMvcAutoConfiguration只有沒有WebMvcConfigurationSupport.class時WebMvcAutoConfiguration才生效,所以有以下結(jié)論:
@EnableWebMvc注解的配置類將會全面接管MVC的配置。
@Retention(RetentionPolicy.RUNTIME) @Target({ElementType.TYPE}) @Documented @Import({DelegatingWebMvcConfiguration.class}) public @interface EnableWebMvc { }//-----------------DelegatingWebMvcConfiguration----------------- public class DelegatingWebMvcConfiguration extends WebMvcConfigurationSupport {private final WebMvcConfigurerComposite configurers = new WebMvcConfigurerComposite();public DelegatingWebMvcConfiguration() {}.....//-----------------WebMvcAutoConfiguration----------------- @ConditionalOnClass({Servlet.class, DispatcherServlet.class, WebMvcConfigurer.class}) @ConditionalOnMissingBean({WebMvcConfigurationSupport.class}) @AutoConfigureOrder(-2147483638) @AutoConfigureAfter({DispatcherServletAutoConfiguration.class, TaskExecutionAutoConfiguration.class, ValidationAutoConfiguration.class}) public class WebMvcAutoConfiguration {public static final String DEFAULT_PREFIX = "";public static final String DEFAULT_SUFFIX = "";private static final String[] SERVLET_LOCATIONS = new String[]{"/"};public WebMvcAutoConfiguration() {}......總結(jié)
以上是生活随笔為你收集整理的WebMvcConfigurer的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 胎产式是指什么
- 下一篇: spring mvc Dispatche