零基础入门SpringBoot前后端分离开发实战指南
一、开发准备与环境搭建
1.1 开发工具安装
工欲善其事,必先利其器。我们需要准备以下开发工具:
-
Java开发环境:
- JDK 17(推荐使用Amazon Corretto或OpenJDK)
- IntelliJ IDEA(社区版即可满足需求)
- Apache Maven 3.8+
-
前端开发环境:
- Node.js LTS版本(包含npm)
- VS Code(轻量级但功能强大)
- Chrome浏览器(开发者工具必备)
-
辅助工具:
- Postman(API测试)
- Git(版本控制)
- Docker Desktop(可选,容器化部署)
1.2 项目初始化
使用Spring Initializr创建项目骨架:
- 访问start.spring.io
- 选择以下配置:
- Project: Maven
- Language: Java
- Spring Boot: 2.7.x
- 添加依赖:
- Spring Web
- Lombok
- Spring Data JPA
- H2 Database
- 生成项目并导入IDE
二、项目结构与基础配置
2.1 标准项目结构
src/
├── main/
│ ├── java/
│ │ └── com/
│ │ └── example/
│ │ ├── config/ # 配置类
│ │ ├── controller/ # 控制器
│ │ ├── dto/ # 数据传输对象
│ │ ├── model/ # 数据模型
│ │ ├── repository/ # 数据访问层
│ │ ├── service/ # 业务逻辑层
│ │ └── Application.java # 启动类
│ └── resources/
│ ├── application.yml # 配置文件
│ └── static/ # 静态资源
2.2 必要配置
在application.yml中添加基础配置:
server:
port: 8080
servlet:
context-path: /api
spring:
datasource:
url: jdbc:h2:mem:testdb
driver-class-name: org.h2.Driver
username: sa
password: password
h2:
console:
enabled: true
path: /h2-console
三、核心功能实现
3.1 创建实体类
以简单的用户管理为例:
@Entity
@Data
@NoArgsConstructor
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(nullable = false)
private String username;
@Column(nullable = false)
private String email;
@Column(nullable = false)
private LocalDateTime createTime = LocalDateTime.now();
}
3.2 实现Repository
public interface UserRepository extends JpaRepository<User, Long> {
Optional<User> findByUsername(String username);
boolean existsByEmail(String email);
}
3.3 业务逻辑层
@Service
@RequiredArgsConstructor
public class UserService {
private final UserRepository userRepository;
public User createUser(User user) {
if (userRepository.existsByEmail(user.getEmail())) {
throw new RuntimeException("Email already exists");
}
return userRepository.save(user);
}
public List<User> getAllUsers() {
return userRepository.findAll();
}
// 其他CRUD方法...
}
四、RESTful接口开发
4.1 控制器实现
@RestController
@RequestMapping("/users")
@RequiredArgsConstructor
public class UserController {
private final UserService userService;
@PostMapping
public ResponseEntity<User> createUser(@RequestBody @Valid User user) {
return ResponseEntity.ok(userService.createUser(user));
}
@GetMapping
public ResponseEntity<List<User>> getAllUsers() {
return ResponseEntity.ok(userService.getAllUsers());
}
// 其他CRUD接口...
}
4.2 统一响应封装
@Data
@NoArgsConstructor
@AllArgsConstructor
public class ApiResponse<T> {
private int code;
private String message;
private T data;
public static <T> ApiResponse<T> success(T data) {
return new ApiResponse<>(200, "success", data);
}
}
五、前后端分离配置
5.1 跨域支持
@Configuration
public class WebConfig implements WebMvcConfigurer {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**")
.allowedOrigins("*")
.allowedMethods("*")
.allowedHeaders("*");
}
}
5.2 接口文档集成
添加Swagger依赖:
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-boot-starter</artifactId>
<version>3.0.0</version>
</dependency>
配置Swagger:
@Configuration
@EnableOpenApi
public class SwaggerConfig {
@Bean
public Docket api() {
return new Docket(DocumentationType.OAS_30)
.select()
.apis(RequestHandlerSelectors.any())
.paths(PathSelectors.any())
.build();
}
}
六、项目测试与验证
6.1 使用Postman测试接口
- 创建用户(POST /users)
- 获取所有用户(GET /users)
- 获取单个用户(GET /users/{id})
- 更新用户(PUT /users/{id})
- 删除用户(DELETE /users/{id})
6.2 单元测试示例
@SpringBootTest
class UserServiceTest {
@Autowired
private UserService userService;
@Test
void shouldCreateUserSuccessfully() {
User user = new User();
user.setUsername("test");
user.setEmail("test@example.com");
User created = userService.createUser(user);
assertNotNull(created.getId());
}
}
七、项目部署与上线
7.1 打包应用
mvn clean package
7.2 运行应用
java -jar target/your-application.jar
7.3 Docker化部署
创建Dockerfile:
FROM openjdk:17-jdk-slim
COPY target/your-application.jar app.jar
ENTRYPOINT ["java","-jar","/app.jar"]
构建并运行容器:
docker build -t springboot-app .
docker run -p 8080:8080 springboot-app
学习建议与后续路线
- 巩固基础:深入理解Spring IoC和AOP原理
- 扩展功能:添加认证授权(JWT)、文件上传等功能
- 性能优化:学习缓存、异步处理等高级特性
- 微服务进阶:探索Spring Cloud生态
- 持续学习:关注Spring官方博客和更新日志
通过本教程,您已经完成了从零开始搭建SpringBoot前后端分离项目并实现基础CRUD功能的完整流程。建议在实际项目中不断实践,逐步掌握更多企业级开发技能。