Spring Boot【官网介绍】-- 001
Introduction
TODO: Spring Boot简化Java企业级开发
特征
- 创建独立的Spring App
- 内嵌Tomcat、Jetty、Undertow(无需部署任何WAR文件)
- 提供启动配置依赖项,简化构建配置
- 自动配置Spring和第三方依赖库
- 可用于生产的功能,eg: 指标、运行状况检查和外部化配置
- 没有任何代码生成,不需要XML配置
第一个HelloWorld
构建RESTful Web服务
构建一个接收HTTP GET请求的服务,以JSON形式来响应用户的请求
{"id":1,"content":"Hello, World!"} // 此时响应默认不带参数的默认请求
在查询字符串中使用可选参数来定义
name的参数将覆盖的默认值World并如下进行响应:
{"id":1,"content":"Hello, User!"}
- 创建资源表示形式类
服务交互过程:
该服务将处理http://localhost:8080/greeting (GET请求)并使用可选name来查询参数,该GET请求应200 OK
在正文中返回表示JSON的响应。
eg:
{
"id": 1,
"content": "Hello, World"
}
id
是实例greeting的唯一标识符,content
是响应的问候语文本表示形式
- Greeting实体构建(简单Java类)
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 Boot App将默认使用spring-starter-web下的默认Jackson JSON库来自动将类型的实例Greeting封装为JSON。网络启动器默认包含Jackson
- 创建要给资源控制器
在Spring构建RESTful Web服务的方法中,HTTP请求由控制器处理。
@RestController
public class GreetingController {
private static final String template = "Hello, %s"; //响应文本
private static final AtomicLong counter = new AtomicLong();
@GetMapping("/greeting")
public Greeting greeting(@RequestParam(name="name",defaultValue = "World")String name){
return new Greeting(counter.incrementAndGet(), String.format(template, name));
}
}
// @GetMapping注解确保 HTTP GET请求将 http://localhost:8080/greeting 映射到 greeting()方法中
注解 | 等价注解 |
---|---|
@RequestMapping(method=GET) | @GetMapping |
@RequestMapping(method=POST) | @PostMapping |
小结:
-
public Greeting getinfo(@RequestParam(value="name",defaultValue="world")String name){}
@ReqeustParam将请求中的name(key)的值(Value)绑定到name上 -
传统的MVC控制器和RESTful Web服务器之间的主要区别在于:创建HTTP响应主体的方式不同(RESTful Web服务控制器填充并返回一个Greeting对象并不会依赖于任何视图技术而是将对象数据包装为JSON直接写入HTTP响应中)
-
【@RestController = @Controller + @ResponseBody】该注解将类标记为控制器,其中每个方法均返回域对象而不是视图
-
【@SpringBootApplication = @Configuration + @EnableAutoConfiguration + @ComponentScan】
- @Configuration: 自动扫描并加载符合条件的组件(比如@Component和@Repository等)或者bean定义,将这些bean定义加载到IoC容器中.
- @EnableAutoConfiguration: 程序启动时,自动加载springboot默认的配置.
- @ComponentScan: 程序启动时自动扫描当前包及子包下所有类.
- 打包:
java -jar target / gs-rest-service-0.1.0.jar