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()异常

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

    下面是项目结构:

  • 相关阅读:
    el-select下拉框选项太多导致卡顿,使用下拉框分页来解决
    vue+elementui前端添加数字千位分割
    Failed to check/redeclare auto-delete queue(s)
    周末啦,做几道面试题放松放松吧!
    idea快捷键
    解决flink运行过程中报错Could not allocate enough slots within timeout of 300000 ms to run the job. Please make sure that the cluster has enough resources.
    用.net平台实现websocket server
    MQTT实战3
    Oracle 查看当前用户下库里所有的表、存储过程、触发器、视图
    idea从svn拉取项目不识别svn
  • 原文地址:https://www.cnblogs.com/houzheng/p/9835180.html
Copyright © 2011-2022 走看看