zoukankan      html  css  js  c++  java
  • 使用纯注解与配置类开发springMVC项目,去掉xml配置

    最近拜读了杨开振老师的书,深入浅出springBoot2.x,挖掘了很多以前被忽略的知识,

    开发一年多,工作中一直用传统springmvc的开发,基本都还是用的传统的xml配置开发,

    看到书里有提到,完全可以使用注解与配置类开发springmvc项目,去掉配置,这里就学习一下!

    先新建一个mvc项目:

    配置好目录结构之后,就可以配置环境了,不过不用xml,这次用注解和java类进行配置,如果是springboot 就可以直接开发了,哈哈:

    继承springmvc提供的AbstractAnnotationConfigDispatcherServletInitializer抽象类可以配置DispatcherServlet:

    //配置DispatcherServlet
    public class WebInit extends AbstractAnnotationConfigDispatcherServletInitializer {
    
        //配置AOP容器,返回AOP配置文件
        @Override
        protected Class<?>[] getRootConfigClasses() {
            return new Class[0];   这里可以配置需要加入容器的Bean,同样可以声明配置类,然后加Bean
        }
        //url映射配置,返回spring的配置文件,
        //这里WebConfig主要是配置DispatcherSerlvet,视频解析器,JSON等
        @Override
        protected Class<?>[] getServletConfigClasses() {
            return new Class[]{WebConfig.class};
        }
        //拦截请求匹配,只拦截.do
        @Override
        protected String[] getServletMappings() {
            return new String[]{"*.do"};
        }
    }
    

      WebConfig.class配置: 这里主要配置试图解析器和请求映射器,其实和xml里面配置Bean是一样的,只不过这里用了@Bean注解

    @Configurable  //声明配置类
    @ComponentScan(value ="com.*",   //配置只扫描指定包下的controller注解的类
            includeFilters = {@ComponentScan.Filter(type = FilterType.ANNOTATION,
                    value = Controller.class)})
    @EnableWebMvc  //启动springmvc配置
    public class WebConfig {
    
        /**
         * 视图解析器
         */
        @Bean(name="tnternalResourceViewResolver")
        public ViewResolver initViewResolver(){
            InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
            viewResolver.setPrefix("/WEB-INF/jsp/");//设置跳转页面路径
            viewResolver.setSuffix(".jsp"); //页面后缀
            return viewResolver;
        }
    
        /**
         * 请求映射处理适配器
         */
        @Bean(name="requestMappingHandlerAdapter")
        public HandlerAdapter initRequestHandlerAdapter(){
            RequestMappingHandlerAdapter handlerAdapter = new RequestMappingHandlerAdapter();
            //配置JSON转换器
            MappingJackson2XmlHttpMessageConverter messageConverter = new MappingJackson2XmlHttpMessageConverter();
            ArrayList<MediaType> mediaTypes = new ArrayList<>();
            mediaTypes.add(MediaType.APPLICATION_JSON_UTF8);//设置接受JOSN转换
            messageConverter.setSupportedMediaTypes(mediaTypes);
            handlerAdapter.getMessageConverters().add(messageConverter);//适配器添加JSON转换
            return handlerAdapter;
        }
    }
    

      最后就可以直接开发Controller了!

    然后有几个坑注意一下:

    1 把springmvc的xml和web.xml删除,因为使用注解已经注册了,否则会报异常,,无法注册DispatcherServlet

    2 添加依赖的时候需要高版本的spring和jackson等,否则也会出现问题,尤其是这个fasterxml依赖,特别坑,最好都用2.8.10版本以上的,四个都缺一不可,否则会报servlet.init()异常

    这些都搞完基本就可以正常开发了:

    下面是项目结构:

  • 相关阅读:
    pat00-自测5. Shuffling Machine (20)
    Spiral Matrix
    Search in Rotated Sorted Array II
    Search in Rotated Sorted Array
    Best Time to Buy and Sell Stock II
    4Sum
    3Sum Closest
    3Sum
    MySQL存储过程、函数和游标
    Word Ladder
  • 原文地址:https://www.cnblogs.com/houzheng/p/9835180.html
Copyright © 2011-2022 走看看