Skip to content

spring

使用 Java 的 Spring Boot 编写 API Server 是一个非常流行且高效的选择。以下是一些建议和步骤,帮助你快速构建一个高质量的 API Server:


使用 Spring Initializr 快速生成项目骨架:

  • 选择 Project: Maven 或 Gradle
  • 选择 Language: Java
  • 选择 Spring Boot Version: 最新稳定版
  • 添加依赖:
    • Spring Web(用于构建 REST API)
    • Spring Data JPA(用于数据库交互)
    • Spring Boot DevTools(用于开发时热部署)
    • H2 Database(内存数据库,适合开发和测试)
    • Spring Security(如果需要身份验证)

下载生成的项目并导入到 IDE(如 IntelliJ IDEA 或 VS Code)。


  • Spring Boot 项目通常是 “layered architecture”(分层架构),按职责划分为控制器层、服务层、数据访问层等
  • Spring Boot 的包结构是完全由开发者决定的,可以根据项目需求自由组织代码
    • 如果需要类似 Django 的 “app” 概念,你可以通过创建子模块(Maven 或 Gradle 子项目)来实现

以下是一个典型的 Spring Boot 项目结构:

src/main/java/com/example/demo/
├── controller/ // 控制器层,处理 HTTP 请求
├── service/ // 服务层,处理业务逻辑
├── repository/ // 数据访问层,操作数据库
├── model/ // 实体类,定义数据库表结构
└── DemoApplication.java // 主应用程序入口

以下是一个简单的用户管理 API 示例:

package com.example.demo.model;
import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
@Entity
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
private String email;
// Getters and Setters
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
}
package com.example.demo.repository;
import com.example.demo.model.User;
import org.springframework.data.jpa.repository.JpaRepository;
public interface UserRepository extends JpaRepository<User, Long> {
}
package com.example.demo.service;
import com.example.demo.model.User;
import com.example.demo.repository.UserRepository;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class UserService {
private final UserRepository userRepository;
public UserService(UserRepository userRepository) {
this.userRepository = userRepository;
}
public List<User> getAllUsers() {
return userRepository.findAll();
}
public User createUser(User user) {
return userRepository.save(user);
}
}
package com.example.demo.controller;
import com.example.demo.model.User;
import com.example.demo.service.UserService;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController
@RequestMapping("/api/users")
public class UserController {
private final UserService userService;
public UserController(UserService userService) {
this.userService = userService;
}
@GetMapping
public List<User> getAllUsers() {
return userService.getAllUsers();
}
@PostMapping
public User createUser(@RequestBody User user) {
return userService.createUser(user);
}
}

application.propertiesapplication.yml 中配置数据库连接:

spring.datasource.url=jdbc:h2:mem:testdb
spring.datasource.driverClassName=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=
spring.jpa.hibernate.ddl-auto=update

在项目的主类(DemoApplication.java)中运行 Spring Boot 应用程序:

package com.example.demo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}

启动后,访问以下 API:

  • GET http://localhost:8080/api/users 获取所有用户
  • POST http://localhost:8080/api/users 创建新用户(请求体为 JSON)

使用 Postman 或 curl 测试 API。例如:

Terminal window
curl -X POST http://localhost:8080/api/users \
-H "Content-Type: application/json" \
-d '{"name": "Alice", "email": "alice@example.com"}'

  • 身份验证: 使用 Spring Security 和 JWT。
  • API 文档: 集成 Swagger(Springdoc OpenAPI)。
  • 单元测试: 使用 JUnit 和 Mockito 测试服务和控制器。

按照以上步骤,你可以快速构建一个功能完善的 Spring Boot API Server。

t1