优秀的编程知识分享平台

网站首页 > 技术文章 正文

Springboot2.0学习2 超详细创建restful服务步骤

nanyue 2024-11-24 19:44:37 技术文章 1 ℃

一、说明

  • 本文使用IDEA创建一个基于SpringBoot的restful服务;
  • 需要安装jdk1.8 gradle
  • 本文学习内容来自SpringBoot官网。

二、步骤

1. IDEA新建项目

2. 写build.gradle内容

buildscript {
    ext {
        springBootVersion = '1.5.8.RELEASE'
    }
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
    }
}

apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'org.springframework.boot'

group 'com.test'
version '1.0-SNAPSHOT'

sourceCompatibility = 1.8

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

等待窗口自动下载完依赖包。

现在目录结构:

3. 创建服务

创建类 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;
    }
}

Springboot使用 Jackson JSON 库来封装JSON。

创建Controller 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));
  }
}

@RequestMapping 注解

将http请求从/greeting映射到greeting()方法 ,没有指明GET PUT POST,它会接受所有HTTP请求。
如果要指定,可以写:@RequestMapping(method=GET)

@RequestParam 绑定请求参数

上面的示例创建并返回一个新的Greeting对象,包含id和Content属性。Content从counter赋值,name使用了template模板。

@RestController

标记类是一个Controller,返回domain对象而不是view。 相当于@Controller + @ResponseBody。

返回JSON

Spring的MappingJackson2HttpMessageConverter自动将Greeting 转为JSON格式。

创建启动函数 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 标记这个类作为Spring上下文的bean定义
  • @EnableAutoConfiguration 告诉SpringBoot基于classpath的一些配置文件自动配置bean。比如,spring-webvc如果在classpath里,这个注解会让应用程序作为一个web应用,这样就会自动设置 如DispatcherServlet的属性。
  • @ComponentScan:告诉Spring在hello包下扫描组件、配置、service、controller等。

这个示例不需要使用web.xml。

三、编译运行

1. 在命令行输入: ./gradlew bootrun

在浏览器输入:http://localhost:8080/greeting
输出:

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

2. 也可以使用Gradle菜单运行:

3. 运行编译后的jar

选择Gradle菜单的assemble

在build目录下生成jar,右击并选择 Open In Terminal,输入命令:

jar -jar myrestful-1.0-SNAPSHOT.jar
最近发表
标签列表