最近拜读了杨开振老师的书,深入浅出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()异常
这些都搞完基本就可以正常开发了:
下面是项目结构: