Skip to content

Spring Boot 入门

作者: luote (luote) · 个人主页 luote996.cn

Spring Boot 是什么

Spring Boot 在 Spring 框架之上提供 自动配置内嵌服务器(Tomcat),让你用少量配置快速启动 Web 应用。create-luote 后端入口是 LuoteApplication.java 上的 @SpringBootApplication

java
@SpringBootApplication
public class LuoteApplication {
    public static void main(String[] args) {
        SpringApplication.run(LuoteApplication.class, args);
    }
}

启动后默认监听 8080 端口。

分层架构

职责不要做的事
Controller接收 HTTP、参数校验、返回 Result写复杂 SQL、写核心业务
Service业务规则、事务、组合多个 Mapper直接操作 HttpServletRequest
Mapper数据库访问写业务判断

Controller 示例

java
@RestController
@RequestMapping("/users")
@RequiredArgsConstructor
public class UserController {

    private final UserService userService;

    @GetMapping("/me")
    public Result<UserVO> me() {
        return Result.ok(userService.getCurrentUser());
    }
}
注解作用
@RestController类中方法返回值直接序列化为 JSON
@RequestMapping类级别路径前缀
@GetMapping / @PostMappingHTTP 方法与路径
@RequiredArgsConstructor注入 final 字段(UserService)

依赖注入(IoC)

不要 new UserServiceImpl(),而是声明接口类型,由 Spring 容器注入实现类:

java
private final UserService userService;

这叫 控制反转:对象的创建和生命周期交给 Spring 管理,便于测试和替换实现。

配置文件

文件用途
application.yml公共配置
application-dev.yml开发 profile
application-prod.yml生产 profile
.env敏感信息,通过环境变量注入

激活 profile:

yaml
spring:
  profiles:
    active: dev

LuoteProperties@ConfigurationProperties 绑定 luote.* 自定义配置项,类型安全且集中管理。

参数校验

DTO 上使用 Jakarta Validation 注解:

java
public class LoginDTO {
    @NotBlank(message = "用户名不能为空")
    private String username;

    @NotBlank(message = "密码不能为空")
    private String password;
}

Controller 方法参数加 @Valid @RequestBody LoginDTO dto,校验失败会进入全局异常处理。

统一响应 Result

所有接口返回 Result<T>,前端只需判断 code === 200

java
return Result.ok(data);
return Result.fail("用户名已存在");

日志

使用 Lombok @Slf4j

java
log.info("用户登录: {}", username);
log.error("登录失败", e);

生产环境注意脱敏,不要打印密码和 Token。

与 luote 脚手架的关系

类/文件说明
LuoteApplication启动类
config/*Security、MyBatis、Swagger、Storage 等配置
controller/AuthController登录注册入口
common/result/Result统一响应体
common/exception/GlobalExceptionHandler全局异常转 JSON

下一章:MyBatis-Plus

MIT Licensed