• 注解配置SpringMVC


    使用配置类和注解代替web.xml和SpringMVC配置文件的功能

    1.注解配置SpringMVC(1)

    在Servlet3.0环境中,容器会在类路径中查找实现javax.servlet.ServletContainerInitializer接口的类,如果找到的话就用它来配置Servlet容器。 Spring提供了这个接口的实现,名为
    SpringServletContainerInitializer,这个类反过来又会查找实现WebApplicationInitializer的类并将配置的任务交给它们来完成。Spring3.2引入了一个便利的WebApplicationInitializer基础实现,名为AbstractAnnotationConfigDispatcherServletInitializer,当我们的类扩展了
    AbstractAnnotationConfigDispatcherServletInitializer并将其部署到Servlet3.0容器的时候,容器会自动发现它,并用它来配置Servlet上下文。

    重新创建一个新的工程模块

    添加其依赖并部署tomcat

    在java目录下创建一个WebInit的类 

    创建一个Spring和SpringMVC相关的类,SpringConfig和WebConfig所示: 

    在WebInit类中继承AbstractAnnotationConfigDispatcherServletInitializer的类,重写它的方法并且进行配置 

    在WebInit类用ctrl+o找到过滤器方法并重写 

    ctrl+o找到过滤器方法并重写

    2.注解配置SpringMVC(2)

    在工程中创建一个控制层的类TestController

    创建一个拦截器相关的类 

    并实现相关的方法

    在WebConfig类下添加代码如下所示: 

    package com.springMVC.config;
    import com.springMVC.interceptor.FirstInterceptor;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.ComponentScan;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.web.multipart.commons.CommonsMultipartResolver;
    import org.springframework.web.servlet.HandlerExceptionResolver;
    import org.springframework.web.servlet.ViewResolver;
    import org.springframework.web.servlet.config.annotation.*;
    import org.springframework.web.servlet.handler.SimpleMappingExceptionResolver;
    import org.thymeleaf.spring5.SpringTemplateEngine;
    import org.thymeleaf.spring5.view.ThymeleafViewResolver;
    
    
    import java.util.List;
    import java.util.Properties;
    
    /*
    * 代替SpringMVC的配置文件
    * 扫描组件、视图解析器、默认的servlet、mvc的注解驱动、
    * 视图控制器、文件上传解析器、拦截器、异常解析器
    *
    * */
    
    //将类标识为配置类
    @Configuration
    //扫描组件
    @ComponentScan("com.springMVC.controller")
    //开启MVC的注解驱动
    @EnableWebMvc()
    
    public class WebConfig  implements WebMvcConfigurer {
    
        @Override
        //默认的Servlet处理静态资源
        public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
            configurer.enable();
    
        }
    
        @Override
        //配置视图解析器
        public void addViewControllers(ViewControllerRegistry registry) {
            registry.addViewController("/").setViewName("index");
        }
    
        @Bean
        //@Bean注解可以将标识的方法的返回值作为bean进行管理,bean的id为方法的方法名
        public CommonsMultipartResolver multipartResolver(){
            return new CommonsMultipartResolver();
    
        }
    
        @Override
        //配置拦截器
        public void addInterceptors(InterceptorRegistry registry) {
            FirstInterceptor firstInterceptor = new FirstInterceptor();
            registry.addInterceptor(firstInterceptor).addPathPatterns("/**");
    
        }
    
        //配置异常解析器
        @Override
        public void configureHandlerExceptionResolvers(List resolvers) {
            SimpleMappingExceptionResolver exceptionResolver = new SimpleMappingExceptionResolver();
            Properties properties = new Properties();
            properties.setProperty("java.lang.ArithmeticException","error");
            exceptionResolver.setExceptionMappings(properties);
            exceptionResolver.setExceptionAttribute("ex");
            resolvers.add(exceptionResolver);
        }
    
        //生成视图解析器并未解析器注入模板引擎
        @Bean
        public ViewResolver viewResolver(SpringTemplateEngine templateEngine){
            ThymeleafViewResolver viewResolver = new ThymeleafViewResolver();
            viewResolver.setCharacterEncoding("UTF-8");
            viewResolver.setTemplateEngine(templateEngine);
            return viewResolver;
    
        }
    }
    

  • 相关阅读:
    RocksDB 在 vivo 消息推送系统中的实践
    重磅!涛思数据发布TDengine PI连接器
    虚拟修补:您需要知道的一切
    pgzrun 拼图游戏制作过程详解(3)
    软件评测师之总线
    索引介绍及索引的分类
    【Java】泛型 之 什么是泛型
    Hot Door CADtools13 for Illustrator 2019-2022
    PyTorch - autograd自动微分
    Vue Slot插槽:组件化的艺术
  • 原文地址:https://blog.csdn.net/weixin_46065214/article/details/127421280