SpringMVC在很久之前就不推荐使用web.xml作为项目的配置文件了,更推荐使用java configuration的方式,因为web.xml配置实在是太繁琐了,今天我们就来演示下如何使用更简单的java configuration的方式来配置SpringMVC,总共分3步,非常简单。
(1)第一步:添加入口类WebApplicationInitializer。
首先需要在项目中添加一个WebApplicationInitializer的实现类,一般是继承AbstractAnnotationConfigDispatcherServletInitializer:
public class MyWebApplicationInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {
//这个就是用来加载SpringContext的,类似于之前的springContext.xml @Override protected Class>[] getRootConfigClasses() {
return new Class>[] { SpringContextConfig.class }; } //这个就是用来加载WebContext的,类似于之前的spring-mvc.xml @Override protected Class>[] getServletConfigClasses() {
return new Class>[] { SpringMvcConfig.class }; } //这个是设置DispatcherServlet的映射路径 @Override protected String[] getServletMappings() {
return new String[] { "/" }; }}
后面我们再讲为啥需要加一个这样的类作为入口,这个跟Servlet3.0规范有关。
(2)第二步:添加Spring MVC的配置类。
首先SpringMvcConfig.java:
@Configuration@EnableWebMvc@ComponentScan("com.github.xjs.mvcdemo.controller")public class SpringMvcConfig implements WebMvcConfigurer {
//配置静态资源的处理 //对静态资源的请求转发到容器缺省的servlet,而不使用DispatcherServlet @Override public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
configurer.enable(); } //json处理 @Override public void configureMessageConverters(List> converters) {
converters.add(new FastJsonHttpMessageConverter()); } //配置JSP视图解析器 @Bean public ViewResolver viewResolver() {
InternalResourceViewResolver resolver = new InternalResourceViewResolver(); resolver.setPrefix("/WEB-INF/views/"); resolver.setSuffix(".jsp"); resolver.setExposeContextBeansAsAttributes(true); return resolver; }}
相信大家对这些东西都很熟了,就是去扫描加载mvc相关的组件。
(3)第三步:添加Spring Context的配置类。
SpringContextConfig.java:
@Configuration@ComponentScan( basePackages={<