最近拜读了杨开振老师的书,深入浅出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()异常

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

下面是项目结构:

使用纯注解与配置类开发springMVC项目,去掉xml配置的更多相关文章

  1. 利用maven开发springMVC项目(二)——框架配置

    申明:主要内容来源于大神博客(使用IntelliJ IDEA开发SpringMVC网站(二)框架配置),我只是用eclipse自己练习使用,记录下来也只是为了学习使用,没有任何的商业用途,侵权必删. ...

  2. 利用maven开发springMVC项目(三)——数据库配置

    前两节介绍了开发环境的搭建以及框架的配置 现在主要介绍在eclipse中如何将SpringMVC.hibernate.mysql数据库结合起来. 数据库配置 下面,就要通过一个简单的例子,来介绍Spr ...

  3. springmvc项目 logback.xml配置 logstash日志收集

    配置logback,需要一个转接的Appender,可以通过Maven依赖加到项目中: <dependency> <groupId>com.cwbase</groupId ...

  4. 零配置简单搭建SpringMVC 项目

    SpringMVC是比较常用的JavaWeb框架,非常轻便强悍,能简化Web开发,大大提高开发效率,在各种Web程序中广泛应用.本文采用Java Config的方式搭建SpringMVC项目,并对Sp ...

  5. Maven-SSM项目pom.xml配置以及springmvc配置以及mybatis配置及web.xml配置

    一.Maven本地仓库的pom.xml配置 (全部是mysql数据库) <project xmlns="http://maven.apache.org/POM/4.0.0" ...

  6. 利用maven开发springMVC项目——开发环境搭建(版本错误解决)

    申明:部分内容参见别人的博客,没有任何的商业用途,只是作为自己学习使用.(大佬博客) 一.相关环境 - eclipse :eclipse-jee-oxygen-3-win32-x86_64(下载地址) ...

  7. Spring Boot2(006):关于配置类(Configuration Classes)和配置(Configuration)

    一.配置类(Configuration Classes) Spring Boot 支持基于 xml 的配置,但更偏向于使用基于 Java 的配置,通常建议使用定义有 main 方法的主 @Config ...

  8. 使用EmBitz开发STM32项目的环境配置

    一.EmBitz软件获取与安装 1.EmBitz软件的获取 EmBitz原名Em::Blocks,是基于Code::Blocks开发的,面向嵌入式的C/C++集成开发环境.支持J-Link和ST-Li ...

  9. 配置wamp开发环境【2】 配置wamp开发环境之mysql的配置

    此前我已经将wamp配置的Apache.PHP.phpmyadmin全部配置完成,以上三种配置参照 配置wamp开发环境 下面我们来看看mysql的配置,这里用的是mysql5.5.20,下载地址: ...

随机推荐

  1. iOS 企业账号申请证书和打包ipa

    准备: 299美元的企业账号. 1.登陆苹果开发者中心: https://developer.apple.com .点击Menber Center.输入企业账号和密码登陆. 2.登陆后选择“Certi ...

  2. 使用SQLyog连接MySQL数据库

    [学习笔记]使用SQLyog连接MySQL数据库 一.使用SQLyog创建数据库用来管理学生信息 复制代码 1 #创建数据库student  2 DROP DATABASE IF EXISTS Mys ...

  3. 【刷题】BZOJ 3551 [ONTAK2010]Peaks加强版

    Description [题目描述]同3545 Input 第一行三个数N,M,Q. 第二行N个数,第i个数为h_i 接下来M行,每行3个数a b c,表示从a到b有一条困难值为c的双向路径. 接下来 ...

  4. 聊聊flink的NetworkEnvironmentConfiguration

    本文主要研究一下flink的NetworkEnvironmentConfiguration NetworkEnvironmentConfiguration flink-1.7.2/flink-runt ...

  5. SDOI2017遗忘的集合

    题面链接 咕咕咕 题外话 为了这道题我敲了\(MTT\).多项式求逆.多项式\(ln\)等模板,搞了将近一天. sol 最近懒得写题解啊,随便搞搞吧. 看到这个就是生成函数套上去. \[F(x)=\p ...

  6. jumpserver 堡垒机搭建

    1.摘要 Jumpserver 是一款由python编写开源的跳板机(堡垒机)系统,实现了跳板机应有的功能.基于ssh协议来管理,客户端无需安装agent. 特点: 完全开源,GPL授权 Python ...

  7. 滴滴打车CTO张博:生死战役,技术和时间赛跑

    三款产品背后的架构变迁 滴滴打车成立初衷是为了解决司机与乘客之间的信息不对称的问题,通过移动互联网和智能手机来打破信息的壁垒.从打车到专车再到顺风车,滴滴打车三款产品的背后是架构的挑战和系统的变迁. ...

  8. 单点登录(十七)----cas4.2.x登录mongodb验证方式成功后返回更多信息更多属性到客户端

    我们在之前已经完成了cas4.2.x登录使用mongodb验证方式登录成功了.也解决了登录名中使用中文乱码的问题. 单点登录(十三)-----实战-----cas4.2.X登录启用mongodb验证方 ...

  9. Java之链表实现栈结构

    package com.wzlove.stack; import java.util.Iterator; import java.util.NoSuchElementException; /** * ...

  10. bzoj 2428: [HAOI2006]均分数据 && bzoj 3680 : 吊打XXX 模拟退火

    每次把元素随便扔随机一个初始解,退火时每次随机拿一个元素扔到随机一个集合里,当温度高时因为状态不稳定扔到那个元素和最小的里边. 如果新解优,更新ans. 把原式拆一下,就可以用int存了. bzoj ...