当然写本文的目的不是为了速度,只是表明现在构建一个Spring web mvc Rest风格的HelloWorld应用会很简单。不过如果看过Spring Boot这个项目,可能只需要最多3分钟就能构建一个简单的Rest风格应用。回头研究下,然后分享下。
我的构建环境
JDK 7
Maven 3
Servlet3容器
创建项目
首先使用Maven创建一个普通Maven应用即可,不必是web的。
添加依赖
- <!-- servlet 3 -->
- <dependency>
- <groupId>javax.servlet</groupId>
- <artifactId>javax.servlet-api</artifactId>
- <version>3.0.1</version>
- </dependency>
- <!--spring context -->
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-context-support</artifactId>
- <version>4.0.0.RELEASE</version>
- </dependency>
- <!--spring webmvc -->
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-webmvc</artifactId>
- <version>4.0.0.RELEASE</version>
- </dependency>
- <!--jackson -->
- <dependency>
- <groupId>com.fasterxml.jackson.core</groupId>
- <artifactId>jackson-databind</artifactId>
- <version>2.2.3</version>
- </dependency>
servlet3依赖scope是provided表示环境提供,然后添加spring-context-support和spring-webmvc依赖,最后用于json的jackson依赖。非常简单明了。
添加maven插件
为了方便测试,添加jetty的maven插件,这样直接使用mvn jetty:run即可运行。
- <build>
- <finalName>springmvc</finalName>
- <plugins>
- <plugin>
- <groupId>org.mortbay.jetty</groupId>
- <artifactId>jetty-maven-plugin</artifactId>
- <version>8.1.8.v20121106</version>
- <configuration>
- <reload>manual</reload>
- <webAppConfig>
- <contextPath>/${project.build.finalName}</contextPath>
- </webAppConfig>
- <connectors>
- <connector implementation="org.eclipse.jetty.server.nio.SelectChannelConnector">
- <port>9080</port>
- <!--<maxIdleTime>60000</maxIdleTime>-->
- </connector>
- </connectors>
- </configuration>
- </plugin>
- </plugins>
- </build>
实体
- package com.sishuok.entity;
- import java.io.Serializable;
- /**
- * <p>User: Zhang Kaitao
- * <p>Date: 13-12-19
- * <p>Version: 1.0
- */
- public class User implements Serializable {
- private Long id;
- private String name;
- public Long getId() {
- return id;
- }
- public void setId(Long id) {
- this.id = id;
- }
- public String getName() {
- return name;
- }
- public void setName(String name) {
- this.name = name;
- }
- @Override
- public boolean equals(Object o) {
- if (this == o) return true;
- if (o == null || getClass() != o.getClass()) return false;
- User user = (User) o;
- if (id != null ? !id.equals(user.id) : user.id != null) return false;
- return true;
- }
- @Override
- public int hashCode() {
- return id != null ? id.hashCode() : 0;
- }
- }
控制器
- package com.sishuok.controller;
- import com.sishuok.entity.User;
- import org.springframework.web.bind.annotation.PathVariable;
- import org.springframework.web.bind.annotation.RequestMapping;
- import org.springframework.web.bind.annotation.RequestMethod;
- import org.springframework.web.bind.annotation.RestController;
- /**
- * <p>User: Zhang Kaitao
- * <p>Date: 13-12-19
- * <p>Version: 1.0
- */
- @RestController
- @RequestMapping("/user")
- public class UserController {
- @RequestMapping(value = "/{id}", method = RequestMethod.GET)
- public User view(@PathVariable("id") Long id) {
- User user = new User();
- user.setId(id);
- user.setName("zhang");
- return user;
- }
- }
pringMVC注解风格配置
- @Configuration
- @EnableWebMvc
- @ComponentScan
- public class AppConfig {
- }
具体含义请参考《Spring4新特性——Groovy Bean定义DSL》部分。
Servlet3容器启动初始化器
在Servlet容器启动时编程式注册Servlet
- package com.sishuok;
- import org.springframework.web.WebApplicationInitializer;
- import org.springframework.web.context.WebApplicationContext;
- import org.springframework.web.context.support.AnnotationConfigWebApplicationContext;
- import org.springframework.web.servlet.DispatcherServlet;
- import javax.servlet.ServletContext;
- import javax.servlet.ServletException;
- import javax.servlet.ServletRegistration;
- /**
- * <p>User: Zhang Kaitao
- * <p>Date: 13-12-19
- * <p>Version: 1.0
- */
- public class AppInitializer implements WebApplicationInitializer {
- @Override
- public void onStartup(ServletContext servletContext) throws ServletException {
- AnnotationConfigWebApplicationContext webApplicationContext =
- new AnnotationConfigWebApplicationContext();
- webApplicationContext.register(AppConfig.class);
- DispatcherServlet dispatcherServlet = new DispatcherServlet(webApplicationContext);
- ServletRegistration.Dynamic dynamic = servletContext.addServlet("dispatcherServlet", dispatcherServlet);
- dynamic.addMapping("/");
- }
- }
然后运行 mvn jetty:run运行即可,浏览器输入如下地址即可得到我们的json数据。
http://localhost:9080/springmvc/user/1
参考示例的github地址:springmvc-rest-helloworld
非常简单的一个Rest风格的web应用就搭建完了,接下来再完善即可。
下一篇将介绍使用Spring Boot 2分钟构建spring mvc REST风格HelloWorld。