使用JavaConfig来配置Spring MVC中的DispatcherServlet
来源:互联网 发布:手机数据恢复精灵root 编辑:程序博客网 时间:2024/03/29 10:04
使用JavaConfig来配置Spring MVC中的DispatcherServlet
我们常常见到的是使用xml来配置Spring MVC中的DispatcherServlet。例如,在这篇博文(http://blog.csdn.net/u010412719/article/details/71597874)中就是使用的是在web.xml文件来配置的。即像DispathcerServlet这样的servlet会配置在web.xml文件中,这只是配置DispathcerServlet的方法之一。借助于Servlet3规范和Spring3.1的功能增强,可以使用Java将DispatcherServlet配置在servlet容器中,而不会再使用web.xml文件。
本文介绍如何使用JavaConfig来配置Spring MVC中的DispatcherServlet。
完整具体步骤如下:
1、借助于IDEA工具建立一个Spring MVC工程,具体步骤省略。
2、添加相关依赖,pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.wrh</groupId> <artifactId>springmvcdemo02</artifactId> <packaging>war</packaging> <version>1.0-SNAPSHOT</version> <name>springmvcdemo02 Maven Webapp</name> <url>http://maven.apache.org</url> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <scope>test</scope> </dependency> <!-- https://mvnrepository.com/artifact/org.springframework/spring-webmvc --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>4.3.8.RELEASE</version> </dependency> <!-- https://mvnrepository.com/artifact/org.springframework/spring-test --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-test</artifactId> <version>4.3.8.RELEASE</version> </dependency> <!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api --> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.1.0</version> </dependency> </dependencies> <build> <finalName>springmvcdemo02</finalName> </build></project>
3、添加一个HelloInitializer类,该类继承了
AbstractAnnotationConfigDispatcherServletInitializer,并重写了其中的三个方法。内容具体如下:
package com.javaconfig.config; import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer; /** * Created by wuranghao on 2017/5/11. */ public class HelloInitializer extends AbstractAnnotationConfigDispatcherServletInitializer{ @Override protected Class<?>[] getRootConfigClasses() { return new Class<?>[]{RootConfig.class}; } //表明要求DispathcherServlet加载应用上下文时,使用定义在WebConfig配置类中的bean,(即使用Java配置) @Override protected Class<?>[] getServletConfigClasses() { return new Class<?>[]{WebConfig.class}; } //将一个或多个路径映射到DispatcherServlet上,这里指定的"/"表示它会时应用的默认Servlet。它会处理进入应用的所有请求 @Override protected String[] getServletMappings() { return new String[]{"/"}; } }
首先我们需要知道的是:只有是扩展了
AbstractAnnotationConfigDispatcherServletInitializer的任意类都会自动的配置DispatcherServlet和Spring应用上下文,Spring应用上下文会位于应用程序的Servlet上下文之中。
即通过AbstractAnnotationConfigDispatcherServletInitializer 来配置DispatcherServlet是传统web.xml的替代方案。
其中,getServletConfigClasses方法返回的是带有@Configuration注解的类将会用来定义DispathcerServlet应用上下文中的bean。
而getRootConfigClasses()方法返回的带有@Configuration注解的类将会用来配置ContextLoaderListener创建的应用上下文中的bean。
4、WebConfig.java
/** * Created by wuranghao on 2017/5/11. */ @Configuration @EnableWebMvc @ComponentScan("com.javaconfig.controller") public class WebConfig extends WebMvcConfigurerAdapter{ @Bean public ViewResolver viewResolver(){ InternalResourceViewResolver viewResolver = new InternalResourceViewResolver(); viewResolver.setPrefix("/WEB-INF/views/"); viewResolver.setSuffix(".jsp"); return viewResolver; } @Override public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) { configurer.enable(); } }
说明:其中:@EnableWebMvc is equivalent to mvc:annotation-driven in XML. It enables support for @Controller-annotated classes that use @RequestMapping to map incoming requests to specific method.
@ComponentScan is equivalent to context:component-scan base-package=”…” providing with where to look for spring managed beans/classes.
5、RootConfig.java
/** * Created by wuranghao on 2017/5/11. */ @Configuration @ComponentScan(basePackages = {"com.javaconfig.controller"}, excludeFilters = { @ComponentScan.Filter(type = FilterType.ANNOTATION,value = EnableWebMvc.class) }) public class RootConfig { }
6、编写控制器:HelloController.java
/** * Created by wuranghao on 2017/5/11. */ @Controller public class HelloController { @RequestMapping(value = "/hello",method = RequestMethod.GET) public String hello(){ return "hello"; } }
以上就是一个通过JavaConfig来配置DispatcherServlet的完整的Spring mvc相关代码。
参考资料
1、书籍:Spring实战
2、http://websystique.com/springmvc/spring-4-mvc-helloworld-tutorial-annotation-javaconfig-full-example/
- 使用JavaConfig来配置Spring MVC中的DispatcherServlet
- Spring MVC 零配置 / Spring MVC JavaConfig
- Spring MVC DispatcherServlet配置
- Spring MVC DispatcherServlet 配置
- Spring MVC DispatcherServlet配置
- Spring MVC---DispatcherServlet配置
- Spring MVC DispatcherServlet配置
- Spring MVC中的DispatcherServlet
- Spring MVC中的DispatcherServlet学习
- Spring MVC中的DispatcherServlet作用
- spring boot 使用javaconfig配置mybatis,pagehelper
- spring mvc概述及配置DispatcherServlet
- spring mvc 配置多个dispatcherservlet
- Spring web mvc DispatcherServlet (1)---配置
- ContextLoaderListener和Spring MVC中的DispatcherServlet学习
- ContextLoaderListener和Spring MVC中的DispatcherServlet学习
- ContextLoaderListener和Spring MVC中的DispatcherServlet学习
- ContextLoaderListener和Spring MVC中的DispatcherServlet学习
- MySQL查看某张表属于哪个库
- java生成指定范围的随机数
- 防止有些控件多次点击
- ES6之变量的解构赋值
- system.drawing.color
- 使用JavaConfig来配置Spring MVC中的DispatcherServlet
- SSH(SSM)框架中中前端jsp向后端传值的域限制(标签限制)
- poj 1003
- nginx中的rewrite用法及实例
- Eclipse使用Maven创建Web时错误:Could not resolve archetype...
- python3 怎么安装 PIL
- 忘记mysql密码跳过权限重置
- javascript连接mysql与php通过odbc连接任意数据库
- java提高篇(二四)-----HashSet