1.环境准备
-
JDK 17 (Spring Boot 3.x要求)
-
Maven 3.8+
-
IDE (IntelliJ IDEA或VS Code)
2.创建Spring Boot项目
使用Spring Initializr (https://start.spring.io/) 创建项目,选择以下依赖:
-
Spring Web (Spring MVC)
-
Spring Data JPA
-
H2 Database (内存数据库,适合示例)
-
Lombok (简化代码)
3.项目结构
src/
├── main/
│ ├── java/
│ │ └── com/
│ │ └── example/
│ │ └── demo/
│ │ ├── DemoApplication.java
│ │ ├── controller/
│ │ │ └── UserController.java
│ │ ├── model/
│ │ │ └── User.java
│ │ ├── repository/
│ │ │ └── UserRepository.java
│ │ └── service/
│ │ └── UserService.java
│ └── resources/
│ ├── application.properties
│ └── data.sql
4.编写代码
实体类 (User.java)
java
package com.example.demo.model;
import jakarta.persistence.*;
import lombok.*;
@Entity
@Table(name = "users")
@Data
@NoArgsConstructor
@AllArgsConstructor
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(nullable = false)
private String name;
@Column(unique = true, nullable = false)
private String email;
}
仓库接口 (UserRepository.java)
java
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> {
}
服务层 (UserService.java)
java
package com.example.demo.service;
import com.example.demo.model.User;
import com.example.demo.repository.UserRepository;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
@RequiredArgsConstructor
public class UserService {
private final UserRepository userRepository;
public List<User> getAllUsers() {
return userRepository.findAll();
}
public User createUser(User user) {
return userRepository.save(user);
}
public User getUserById(Long id) {
return userRepository.findById(id)
.orElseThrow(() -> new RuntimeException("User not found"));
}
}
控制器 (UserController.java)
java
package com.example.demo.controller;
import com.example.demo.model.User;
import com.example.demo.service.UserService;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController
@RequestMapping("/api/users")
@RequiredArgsConstructor
public class UserController {
private final UserService userService;
@GetMapping
public List<User> getAllUsers() {
return userService.getAllUsers();
}
@PostMapping
public User createUser(@RequestBody User user) {
return userService.createUser(user);
}
@GetMapping("/{id}")
public User getUserById(@PathVariable Long id) {
return userService.getUserById(id);
}
}
配置文件 (application.properties)
# 启用H2控制台
spring.h2.console.enabled=true
spring.h2.console.path=/h2-console
# 数据库配置
spring.datasource.url=jdbc:h2:mem:testdb
spring.datasource.driverClassName=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=
# JPA配置
spring.jpa.show-sql=true
spring.jpa.hibernate.ddl-auto=update
spring.jpa.properties.hibernate.format_sql=true
初始化数据 (data.sql)
sql
INSERT INTO users (name, email) VALUES
('张三', 'zhangsan@example.com'),
('李四', 'lisi@example.com');
5.运行和测试
-
启动应用:运行
DemoApplication.java
中的main方法 -
访问H2控制台:http://localhost:8080/h2-console
-
JDBC URL:
jdbc:h2:mem:testdb
-
User Name:
sa
-
Password: (空)
-
-
测试API:
-
POST http://localhost:8080/api/users
json
{ "name": "王五", "email": "wangwu@example.com" }
特性:
-
Spring Boot 3:最新的Spring框架版本
-
Jakarta EE 9+:取代了旧的javax包
-
Lombok:减少样板代码
-
H2内存数据库:快速开发测试
-
RESTful风格API:符合现代API设计规范
-
分层架构:Controller-Service-Repository
-
依赖注入:通过构造函数注入