SpringBoot2.x入门到项目实战课程系列(第五章)( 七 )

matchingBeans = BeanFactoryUtils.beansOfTypeIncludingAncestors(//从容器中获取所有的视图解析器this.obtainApplicationContext(), ViewResolver.class).values();

  • 自定义视图解析器:可以@Bean向容器中添加一个我们自定义的视图解析器 , 即可被容器管理使用
@Beanpublic ViewResolver myViewResolver () { return new MyViewResolver();}private class MyViewResolver implements ViewResolver { @Override public View resolveViewName(String s, Locale locale) throws Exception {return null; }}// DispatcherServlet.doDispatch 断点后,发送任意请求 , 可查看已被容器自动管理了
  • 自动注册 Converter , GenericConverter , and Formatter beans 。
  • Converter :转换器;如: 文本类型转换目标类型 , true 转 boolean类
  • GenericConverter :转换器 , Spring内部在注册时 , 会将Converter先转换为GenericConverter之后 , 再统一对GenericConverter注册 。
  • Formatter : 格式化器; 如: 2017/12/17 格式化 Date类型
@Beanpublic FormattingConversionService mvcConversionService() { //传入日期格式 ,spring.mvc.date-format配置日期格式 WebConversionService conversionService = new WebConversionService(this.mvcProperties.getDateFormat()); this.addFormatters(conversionService); return conversionService;}//将格式化器添加容器中protected void addFormatters(FormatterRegistry registry) { this.configurers.addFormatters(registry);}
  • 对 HttpMessageConverters 的支持 。
  • SpringMVC 用它来转换Http请求和响应的;User _json User _xml
  • 可以通过@Bean向容器中添加一个我们自定义HttpMessageConverters, 即可被容器管理使用
  • 自动注册 MessageCodesResolver。
  • 定义错误代码生成规则
  • 自动注册 ConfigurableWebBindingInitializer。
  • 初始化所有 Web数据绑定器 对象 ,比如 请求数据 ——》JavaBean
  • 对静态资源的支持 , 包括对 Webjars 的支持 。
  • 对静态首页 index.html 的支持 。
  • 对自定义Favicon 图标的支持 。
如果想保留 Spring Boot MVC的特性 , 而且还想扩展新的功能(拦截器, 格式化器, 视图控制器等) , 你可以在你自定义的 WebMvcConfigurer 类上增加 @Configuration 注解 。
如果你想全面控制SpringMVC(也就是不使用默认配置功能), 你在自定义的Web配置类上添加
@Configuration 和 @EnableWebMvc 注解 。
5.6 扩展 SpringMVC 功能
  • 扩展一个视图解析器功能
  • 如果想保留 Spring Boot MVC的特性 , 而且还想扩展新的功能(拦截器, 格式化器, 视图控制器等) , 你可以在你自定义的 WebMvcConfigurer 类上增加 @Configuration 注解 。
  • 自定义配置类保留了所有的自动配置, 也能用我们扩展的功能
package com.dragon.springboot.config;....../*** @Auther: Dragon Wen*/@Configurationpublic class MySpringMvcConfigurer implements WebMvcConfigurer{@Overridepublic void addViewControllers(ViewControllerRegistry registry) {// super.addViewControllers(registry);//发送 /dragonwen 请求来到 success.htmlregistry.addViewController("/dragonwen").setViewName("success");}}package com.dragon.springboot.config;....../*** @Auther: Dragon Wen*/@Configurationpublic class MySpringMvcConfigurer implements WebMvcConfigurer{ @Override public void addViewControllers(ViewControllerRegistry registry) {// super.addViewControllers(registry);//发送 /mengxuegu 请求来到 success.htmlregistry.addViewController("/mengxuegu").setViewName("success"); }}