CodeRoadMap
首页路线题库资源库文章社区
CodeRoadMap

程序员的学习成长路线图。内容免费开放,登录后可同步路线图与课时进度。

由 程序员柏风 独立维护 · 关于作者

学习

  • 路线图
  • 课程
  • 面试题
  • 文章
  • 我

更多

  • 资源
  • 社区
  • 关于作者
  • 内容说明

© 2026 CodeRoadMap

津ICP备2026012044号-1·津公网安备12011002026155号·coderoadmap@126.com
Java 生态与工具链/课时/综合练习
RawBlame
课时目录12 节

Java 生态与工具链

  1. 01Java 生态地图
  2. 02数据库访问
  3. 03Hibernate 深入
  4. 04EBean ORM
  5. 05日志框架
  6. 06Javadoc 与文档
  7. 07Play Framework
  8. 08Javalin 微框架
  9. 09REST Assured
  10. 10JMeter 性能测试
  11. 11Java 加密基础
  12. 12综合练习

综合练习

REST Assured + JMeter 测一个 Spring API。

40 分钟

综合练习

把本 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 可观测性。

加载本节练习…
← 上一课Java 加密基础