跟着官网学Spring—构建RESTful Web服务

​ 第一篇跟着官网学spring—快速入门指南我们学习了如何快速搭建一个项目,以及如何运行,并编写第一行代码,接下来我们继续跟着官网学习Spring中的构件一个RESTful Web服务。

跟着官网学spring—快速入门指南

跟着官网学Spring—构建RESTful Web服务

Spring从入门到入土——概述以及IOC理论推导

Spring从入门到入土——快速上手Spring

Spring从入门到入土——依赖注入(DI)

Spring从入门到入土——Bean的作用域

从Spring Initializr开始

​ 还是和上次一样使用 快速开始创建一个”web“项目。

创建一个形式类

package com.zhonghu.springhelloworlddemo;

public class Greeting {
    private final long id;
    private final String name;

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

    public long getId() {
        return id;
    }

    public String getContent() {
        return name;
    }
}

​ 其中包含两个参数一个是id,表示第几次访问,第二是名字表示来访者的名字。

创建一个资源控制器

​ 在Spring的构件RESTFul Web服务的方法中,HTTP请求由控制器处理,这些组件由@RestController注解标识。用来处理GET请求:/greeting

package com.zhonghu.springhelloworlddemo;

import java.util.concurrent.atomic.AtomicLong;

import com.zhonghu.springhelloworlddemo.Greeting;
import org.springframework.web.bind.annotation.GetMapping;
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();

    @GetMapping("/greeting")
    public String greeting(@RequestParam(value = "name", defaultValue = "World") String name) {
        Greeting greeting = new Greeting(counter.incrementAndGet(), String.format(template, name));
        System.out.println(greeting.getContent()+greeting.getId());
        return String.format("您是第"+greeting.getId()+"访问的,"+greeting.getContent());
    }
}

​ 该控制器作用就是接受一个参数,并且内部有一个累加器,最后将id和那么输出到页面中,在此之前将这两个参数输出到命令界面中。

  • @GetMaping 注解可以确保HTTP GET请求到/greeting 被映射到greeting()方法

    其他HTTP动词也有伴随注解(例如POST:@PostMaping)。

    另外@RequestMaping它们都有一个注释,它都是从中衍生的,并且可以用作同义词(例如@RequestMapping(method=GET))

  • 传统MVC控制器和RESTful Web服务控制器之间的主要区别在于创建HTTP响应主体的方式。RESTful Web服务器填充并返回一个Greeting对象,而不是依赖于视图技术来执行向HTML的问候数据的服务器端呈现。对象数据作为JSON之间写入HTTP响应

  • @RestController:将类标记为控制器,其中每个方法均返回域对象而不是视图。这是同时包含@Controller和@ResponseBody的简写

  • 该Creeting对象必须转化为JSON,借助Spring的HTTP消息转化器支持,无需手动进行此转化。

  • @SpringBootApplication是一个方便注释,他添加了一下所有的内容:

    • @Configuration:将类标记为引用程序上下文的Bean定义的源
    • @EnableAutoConfiguration:告诉Spring Boot根据类路径设置,其他bean和各种属性设置开始添加bean。
    • @ComponentScan:告诉Spring在包中寻找其他组件,配置和服务,让它找到控制器
  • 该main方法使用Spring Boot的SpringApplication.run()方法来启动应用程序。

生成可以执行的jar文件

​ 直接使用maven

​ 其中:

  • clean:用于清除以前构建(install)生成的所有文件,即清除了Target目录中的所有文件包括目录
  • validate:用于验证项目是否正确
  • compile:编译项目的源代码,主要是java文件
  • test:用合适的测试框架来进行测试,测试Compile编译出来的代码,测试的东西一般不加包和扩展
  • packaging:获取compile中编译好的代码并将其打包成jar
  • vertify:用来验证test
  • install:将软件包安装到本地存储库中。
  • site
  • deploy:复制最终的包到远程仓库,共享给其他的开发人员和项目。

启动以及测试

​ 使用maven中的install,进行打包并安装到本地存储库中。

猜你喜欢

转载自blog.csdn.net/issunmingzhi/article/details/105878439