使用SpingBoot 来搭建restful web service 是一件非常简单的事情。下面来看看如何搭建一个简单的restful web servece .

下载官方demo  https://github.com/spring-guides/gs-rest-service.git

此项目是maven 和gradle 构建 本地需要安装maven 环境 或者gradle  环境。

cd into gs-rest-service/initial

创建一个资源 Greeting 类 如下:

src/main/java/hello/Greeting.java

package hello;

public class Greeting {

    private final long id;
    private final String content;

    public Greeting(long id, String content) {
        this.id = id;
        this.content = content;
    }

    public long getId() {
        return id;
    }

    public String getContent() {
        return content;
    }
}

创建一个 资源控制器 

src/main/java/hello/GreetingController.java


package hello;

import java.util.concurrent.atomic.AtomicLong;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class GreetingController {

    private static final String template = "Hello, %s!";
    private final AtomicLong counter = new AtomicLong();

    @RequestMapping("/greeting")
    public Greeting greeting(@RequestParam(value="name", defaultValue="World") String name) {
        return new Greeting(counter.incrementAndGet(),
                            String.format(template, name));
    }
}
@RestController 表示会返回数据的Controller 等同于 @Controller + @ResponseBody 

@RequestMapping 将请求路径映射到方法  

@RequestParam 请求参数绑定 value 是参数名 defaultValue 默认值 

Greeting方法返回了 一个Greeting 对象, 该对象通过MappingJackson2HttpMessageConverter会自动

转成成json 格式的数据返回

 

创建一个应用执行类 Application 

src/main/java/hello/Application.java


package hello;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class Application {

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}
@SpringBootApplication 它是一个便利的注解,它是由以下几个注解组成

@Configuration  定义应用的上下文 

@EnableAutoConfiguration   启用自动配置:告诉Spring Boot 启动时添加classpath 下的beans,其它

beans,和属性设置。

@@EnableWebMvc SpringMVC 组件

@ComponentScan 告诉spring 去 hello 包下查找组件,配置,和其他服务。以便发现GreetingController .


在main 方法中使用SpringApplicaiton.run(),启动应用。没有xml,也没有web.xml,它是100%纯java web 应用,不需要管理配置。


maven 配置,如下:

pom.xml 

<?xml version="1.0" encoding="UTF-8"?>
<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/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>org.springframework</groupId>
    <artifactId>gs-rest-service</artifactId>
    <version>0.1.0</version>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.4.1.RELEASE</version>
    </parent>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>com.jayway.jsonpath</groupId>
            <artifactId>json-path</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <properties>
        <java.version>1.8</java.version>
    </properties>


    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

    <repositories>
        <repository>
            <id>spring-releases</id>
            <url>https://repo.spring.io/libs-release</url>
        </repository>
    </repositories>
    <pluginRepositories>
        <pluginRepository>
            <id>spring-releases</id>
            <url>https://repo.spring.io/libs-release</url>
        </pluginRepository>
    </pluginRepositories>
</project>
gradle 配置

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath("org.springframework.boot:spring-boot-gradle-plugin:1.4.1.RELEASE")
    }
}

apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'idea'
apply plugin: 'spring-boot'

jar {
    baseName = 'gs-rest-service'
    version =  '0.1.0'
}

repositories {
    mavenCentral()
}

sourceCompatibility = 1.8
targetCompatibility = 1.8

dependencies {
    compile("org.springframework.boot:spring-boot-starter-web")
    testCompile('org.springframework.boot:spring-boot-starter-test')
}

点击运行main 方法 ,默认端口为8080

在浏览器中输入 

http://localhost:8080/greeting

即可。看到 

{"id":1,"content":"Hello, World!"}

打 jar 包 

命令行方式

maven 方式 : ./mvnw clean package.

gradle 方式:  ./gradlew build

原文 :https://spring.io/guides/gs/rest-service/

###

作者备注:实际开发中可以使用IDE maven 插件 或gradle打包。










Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐