大家好,我是程序员柏风,AI 最全的 Vibecoding 学习地图 http://coderoadmap.cn 作者。
综合练习
把本 track 串起来:用 Spring Boot 或 Javalin 实现图书 API,HikariCP + JPA 持久化,SLF4J 打日志,REST Assured 写集成测试,JMeter 做 baseline 压测。完成后进入 spring-boot-essentials 深化,或回顾 orm-essentials / java-core-essentials 薄弱环节。
学习目标
- 独立完成「持久化 + HTTP + 日志 + API 测试 + 压测」闭环
- 对照 jev-intro 至 jev-crypto 的知识点自检
- 输出一份可复现的 README(构建、测试、压测命令)
任务:Book Catalog API
1. 领域与持久化(jev-db + jev-hibernate)
@Entity
public class Book {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String isbn;
private String title;
// getters / setters
}
public interface BookRepository extends JpaRepository<Book, Long> {
Optional<Book> findByIsbn(String isbn);
}
application.yml 配置 HikariCP 与 H2/MySQL;开启 SQL 日志仅 dev 环境。
2. REST 层(jev-javalin 或 Spring Boot)
@RestController
@RequestMapping("/api/books")
public class BookController {
private final BookRepository repo;
@GetMapping("/{isbn}")
public Book get(@PathVariable String isbn) {
return repo.findByIsbn(isbn)
.orElseThrow(() -> new ResponseStatusException(NOT_FOUND));
}
@PostMapping
@ResponseStatus(CREATED)
public Book create(@RequestBody @Valid Book book) {
return repo.save(book);
}
}
3. 日志(jev-logging)
在 Service 或 Controller 用 SLF4J 记录 isbn、耗时;异常带栈,不打敏感字段。
4. REST Assured 测试(jev-rest-assured)
至少 5 个用例:创建成功、重复 isbn、404、非法 JSON 400、列表或查询。
@SpringBootTest(webEnvironment = RANDOM_PORT)
class BookApiIT {
@LocalServerPort int port;
@BeforeEach void setup() { RestAssured.port = port; }
@Test void createAndGet() { /* given-when-then */ }
}
5. JMeter baseline(jev-jmeter)
- 50 线程,Ramp-Up 10s,GET
/api/books/{isbn}循环 20 次 - 记录 Throughput、P90、Error %
- 若 Error % > 0,排查连接池或 SQL(jev-db / jev-hibernate)
6. 可选加分(jev-crypto)
为「管理员重置」接口加 HMAC 签名头校验,或演示 BCrypt 存后台用户密码(与 Book 无关的独立表)。
交付清单
| 项 | 要求 |
|---|---|
| 源码 | Maven/Gradle,JDK 21 |
| 测试 | mvn test 全绿 |
| 压测 | book-api.jmx + 结果截图或 HTML 报告路径 |
| 文档 | README:启动、测试、jmeter 命令 |
自检
- 能口头解释 HikariCP 池大小与 JMeter 线程数的关系
- REST Assured 与 JMeter 分别验证什么维度
- 说出一个若上生产还需补的能力(鉴权、限流、可观测性 → Spring Security / Actuator)
练习
- 完成上述 Book API 并提交可运行仓库或模块
- 写 README 三节:Run / Test / Load Test
- 在 /roadmaps/java 勾选本 track 相关节点为「已完成」
小结
JDBC 与池子、ORM、日志、HTTP、REST Assured、JMeter、加密常识——Java 生态工具链的合格后端应能独立串起来。 本 track 完结;下一步 Spring Boot 实战或 DevOps 可观测性。