Spring入门之使用IDEA实现第一个RESTful风格的Hello World

实现效果:

你将可以通过访问http://localhost:8080/greeting来得到一个JSON格式的返回值

效果图如下:

访问效果
访问效果

需要准备:

1、大约十五分钟左右的时间。

2、一个你喜欢的开发工具,我们这里选用IntelliJ IDEA.

3、JDK 1.8 *或更高版本。

4、Gradle 4+

实现步骤:

新建一个Gradle项目

点击File->New Project出现如下界面:

新建工程

选择Gradle,勾选Java,然后点击Next。出现如下界面:

创建工程

这里分别填写组织名和工程名。可以自由填写。作者这里填写了的分别是:efeelture和hhulizhen_spring_helloworld,填好之后点击Next->Next->Next->finish。

然后选择在新的窗口中打开,这是会跳出一个弹窗,询问你对于Gradle的变更是否选择自动更新

选择自动更新

这里建议选择Enable Auto-Import。

初建工程会同步一会儿,随之会显示出如下文件层级:

目录层级

接下来建立如下目录层级如图:

目录层级

更改gradle文件

build.gradle:

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

apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'idea'
apply plugin: 'org.springframework.boot'
apply plugin: 'io.spring.dependency-management'

bootJar {
    baseName = 'gs-rest-service'
    version =  '0.1.0'
}
group 'efeelture'
version '1.0-SNAPSHOT'

sourceCompatibility = 1.8
targetCompatibility = 1.8

repositories {
    mavenCentral()
}

dependencies {
    testCompile group: 'junit', name: 'junit', version: '4.12'
    compile("org.springframework.boot:spring-boot-starter-web")
    testCompile('org.springframework.boot:spring-boot-starter-test')
}

Spring Boot gradle插件提供了许多方便的功能.

  1. 它搜索public static void main()方法来标记为可运行类
  2. 它提供了一个内置的依赖关系解析器,用于设置版本号以匹配Spring Boot依赖关系。你可以覆盖你想要的任何版本,但是它会默认使用Boot的选择版本。

现在已经设置了项目并构建了系统,接下来可以创建Web服务。

该服务将处理/ greeting的GET请求,可选地在查询字符串中使用名称参数。
GET请求应该在表示问候的正文中返回带有JSON的响应。
它应该看起来像这样:

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

id字段是问候语的唯一标识符,content是问候语的文字表示。
为了对问候表示进行建模,可以创建一个资源表示类。
为id和内容数据提供一个普通的Java对象,其中包含字段,构造函数和访问器:

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;
    }
}

如在下面的步骤中看到的,Spring使用Jackson JSON库自动将类型为Greeting的实例编组为JSON。

接下来,将创建提供这些问候的资源控制器。

创建一个资源控制器

在Spring构建RESTful Web服务的方法中,HTTP请求由控制器处理。这些组件可以通过@RestController批注轻松识别,并且GreetingController通过返回Greeting类的新实例来处理/ greeting的GET请求:

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注释可确保对/ greeting的HTTP请求映射到greeting()方法。

上面的例子没有指定GET与PUT,POST等等,因为@RequestMapping默认映射所有的HTTP操作。可以使用@RequestMapping(method = GET)来缩小这个映射。

@RequestParam将查询字符串参数名称的值绑定到greeting()方法的name参数中。如果请求中缺少name参数,则使用“World”的defaultValue。
方法体的实现基于计数器的下一个值创建并返回一个带有id和content属性的新Greeting对象,并使用问候模板格式化给定名称。
传统的MVC控制器和上面的RESTful Web服务控制器之间的一个主要区别在于HTTP响应主体的创建方式。这个RESTful Web服务控制器只需填充并返回一个Greeting对象,而不是依赖视图技术将问候数据的服务器端呈现呈现给HTML。对象数据将作为JSON直接写入HTTP响应。
此代码使用Spring 4的新的@RestController注释,该注释将类标记为控制器,其中每个方法都返回一个域对象而不是视图。它是@Controller和@ResponseBody的缩写。
Greeting对象必须转换为JSON。由于Spring的HTTP消息转换器支持,不需要手动执行此转换。由于Jackson 2位于类路径中,因此会自动选择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将类标记为应用程序上下文的bean定义的来源。

  • @EnableAutoConfiguration通知Spring Boot根据类路径设置,其他bean和各种属性设置开始添加bean。

  • 通常你会为Spring MVC应用程序添加@EnableWebMvc,但Spring Boot在类路径中看到spring-webmvc时会自动添加。这将该应用程序标记为Web应用程序并激活关键行为,例如设置DispatcherServlet。

  • @ComponentScan告诉Spring在hello包中查找其他组件,配置和服务,以便找到控制器。

main()方法使用Spring Boot的SpringApplication.run()方法启动应用程序。你有没有注意到没有一行XML?没有web.xml文件。这个Web应用程序是100%纯Java。

至此整个目录结构应该为如图:

目录结构

接下来我们将运行它

右上角有个绿色的小三角箭头旁边有个下拉栏,点击它:

运行

点击左上角绿色+号,选择Spring Boot


创建运行

创建运行

选择文件

选择如图文件,点击OK、OK。
运行处会出现刚刚创建的工程:


运行

点击运行(绿色小三角)

控制台显示:

控制台

显示已经运行成功!浏览器访问:http://localhost:8080/greeting

访问结果

在URL中添加:?name=hhulizhen
访问结果

转载请注明出处!

你可能感兴趣的:(Spring入门之使用IDEA实现第一个RESTful风格的Hello World)