第一篇跟着官网学spring—快速入门指南我们学习了如何快速搭建一个项目,以及如何运行,并编写第一行代码,接下来我们继续跟着官网学习Spring中的构件一个RESTful Web服务。
从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,进行打包并安装到本地存储库中。