【java前后端分离技术】SpringBoot开发实战

92 阅读3分钟

零基础入门SpringBoot前后端分离开发实战指南

ffb45da5aa1d4e0d972453edc3fe6f4b~tplv-obj.jpg

一、开发准备与环境搭建

1.1 开发工具安装

工欲善其事,必先利其器。我们需要准备以下开发工具:

  1. Java开发环境

    • JDK 17(推荐使用Amazon Corretto或OpenJDK)
    • IntelliJ IDEA(社区版即可满足需求)
    • Apache Maven 3.8+
  2. 前端开发环境

    • Node.js LTS版本(包含npm)
    • VS Code(轻量级但功能强大)
    • Chrome浏览器(开发者工具必备)
  3. 辅助工具

    • Postman(API测试)
    • Git(版本控制)
    • Docker Desktop(可选,容器化部署)

1.2 项目初始化

使用Spring Initializr创建项目骨架:

  1. 访问start.spring.io
  2. 选择以下配置:
    • Project: Maven
    • Language: Java
    • Spring Boot: 2.7.x
  3. 添加依赖:
    • Spring Web
    • Lombok
    • Spring Data JPA
    • H2 Database
  4. 生成项目并导入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测试接口

  1. 创建用户(POST /users)
  2. 获取所有用户(GET /users)
  3. 获取单个用户(GET /users/{id})
  4. 更新用户(PUT /users/{id})
  5. 删除用户(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

学习建议与后续路线

  1. 巩固基础:深入理解Spring IoC和AOP原理
  2. 扩展功能:添加认证授权(JWT)、文件上传等功能
  3. 性能优化:学习缓存、异步处理等高级特性
  4. 微服务进阶:探索Spring Cloud生态
  5. 持续学习:关注Spring官方博客和更新日志

通过本教程,您已经完成了从零开始搭建SpringBoot前后端分离项目并实现基础CRUD功能的完整流程。建议在实际项目中不断实践,逐步掌握更多企业级开发技能。