使用纯注解与配置类开发springMVC项目,去掉xml配置

摘要:
最近,我读了杨开珍先生的一本书,简单地了解了很多springBoot2.x,并探索了许多以前被忽视的知识。它已经开发了一年多。在我的工作中,我一直使用传统的springmvc开发,基本上仍然使用传统的xml配置开发。正如书中提到的,我可以使用注释和配置类来开发springmvc项目,并删除配置。下面是学习方法!

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

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

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

先新建一个mvc项目:

使用纯注解与配置类开发springMVC项目,去掉xml配置第1张

配置好目录结构之后,就可以配置环境了,不过不用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()异常

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

使用纯注解与配置类开发springMVC项目,去掉xml配置第2张

下面是项目结构:

使用纯注解与配置类开发springMVC项目,去掉xml配置第3张

免责声明:文章转载自《使用纯注解与配置类开发springMVC项目,去掉xml配置》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Hibernate之Hibernate的下载与安装mysql安装,以及从csv插入数据下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Appium在ios下获取页面元素的一种新思路

传统思路 手机app页面(框内是要获取的元素): 新的方法: 因为appium在ios中,通过driver.page_source属性,能得到一个xml格式的全部元素。于是采用这种方法,得到了全部元素,适合查询浏览等这类较少操作的页面。 代码如下: 主要用到的方法如下: 导入xml解析模块 1、import xml.etree.ElementTr...

SVG动画

动画原理 SVG动画,就是元素的属性值关于时间的变化。 如下图来说,元素的某个属性值的起始值(from)到结束值(to)在一个时间段(duration)根据时间函数(timing-function)计算出每一帧(frame)的插值(interpolation)作为变换的行为。 PS:SVG动画是帧动画,在SVG里也就是每秒设置多少个value值。 SVG...

mybatis.mapper-locations 配置多个mapper路径

springboot或者spring项目经常会引用其它项目,把其它项目的Jar包加进来,因为每个项目的包路径不一样,mapper.xml的路径也不一样,这个时候就需要引入多个路径。 项目A,mapper.xml 路径在 resources/mappers/push 下面 项目B,mapper.xml 路径再 resources/mappers/下面 项目A...

C# xml上传以及记录保存xml

1.xml保存 private readonly string XMLSavePath = Path.Combine(Environment.CurrentDirectory, "XML", GlobalParam.Today); public LogicalService(){// 创建XML日志保存目录if (!Directory.Exists(X...

xml的定义以及用途

1.xml的定义用途 XML全称为 Extensible Markup Language,意思是可扩展的标记语言。XML语法上和HTML比较相似,但HTML中的元素是固定的,而XML的标签是可以由用户自定义的。W3C在1998年2月发布1.0版本,2004年2月又发布1.1版本,但因为1.1版本不能向下兼容1.0版本,所以1.1没人用。同时,在2004年2...

Sandcastle的使用

Quote:Sandcastle, created by Microsoft, is a tool used for creating MSDN-style documentation from .NET assemblies and their associated XML comments files. The current version is t...