题目
如何使用Spring Boot创建一个简单的RESTful微服务?
信息
- 类型:问答
- 难度:⭐
考点
Spring Boot基础, RESTful API设计, 微服务基本概念
快速回答
创建Spring Boot RESTful微服务的核心步骤:
- 使用Spring Initializr创建项目(选择
Spring Web依赖) - 创建
@RestController控制器类 - 使用
@GetMapping等注解定义API端点 - 通过主类启动应用(默认端口8080)
- 使用HTTP客户端测试API
原理说明
Spring Boot通过自动配置简化了微服务开发:
- 内嵌服务器:默认集成Tomcat,无需单独部署
- 约定优于配置:自动配置Web MVC、JSON转换等组件
- RESTful设计:通过HTTP方法(GET/POST等)映射资源操作
代码示例
1. 控制器实现:
@RestController
public class ProductController {
// 简单内存存储
private List<String> products = new ArrayList<>(Arrays.asList("Laptop", "Phone"));
@GetMapping("/products")
public List<String> getAllProducts() {
return products; // 自动转为JSON
}
@PostMapping("/products")
public ResponseEntity<String> addProduct(@RequestBody String product) {
products.add(product);
return ResponseEntity.status(HttpStatus.CREATED).body("Product added");
}
}2. 主启动类:
@SpringBootApplication
public class ProductServiceApplication {
public static void main(String[] args) {
SpringApplication.run(ProductServiceApplication.class, args);
}
}最佳实践
- 资源命名:使用名词复数(如
/products)而非动词 - HTTP状态码:正确返回201(Created)、404(Not Found)等状态
- 版本控制:在URL中加入版本号(如
/api/v1/products) - 依赖管理:使用
spring-boot-starter-web简化配置
常见错误
- 缺少注解:忘记添加
@RestController导致返回视图而非JSON - 端口冲突:多服务运行时未修改
server.port配置 - 路径冲突:两个方法使用相同URL路径但不同HTTP方法时需明确指定
- 测试遗漏:未用
@SpringBootTest编写基础集成测试
扩展知识
- 自动序列化:Spring Boot默认使用Jackson库将对象转为JSON
- 热部署:开发时添加
spring-boot-devtools依赖实现代码热更新 - 配置管理:通过
application.properties自定义端口、上下文路径等:server.port=9090 server.servlet.context-path=/api - 微服务演进:后续可引入Spring Cloud实现服务发现、负载均衡等