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

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

    下面是项目结构:

  • 相关阅读:
    swiper.js 点击链接跳转后再次返回到轮播原位置
    KVO和KVC
    XML与HTML的区别
    iOS UIAppearance使用详解
    文件处理
    IOS 四种数据永久保存的方式
    UIImage图片处理(更改颜色,修改透明度,缩小,合并图片)
    从一个视图控制器切换到另一个视图控制器的几种方式
    NSString的常用方法
    NSURLRequest和NSURLConnection
  • 原文地址:https://www.cnblogs.com/houzheng/p/9835180.html
Copyright © 2011-2022 走看看