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 / @PostMapping | HTTP 方法与路径 |
| @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: devLuoteProperties 用 @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