Skip to content

ADR-0002: 保护模块(hiapi-core-public)不放 JPA 实体/仓库

  • 日期:2025(补记) 状态:✅ 生效

背景

hiapi-core-public 是加密分发的受保护模块,经 C++ JNI 加载器在 Spring 上下文 refresh 之后载入。曾把 JPA 实体/Repository 放进去导致启动崩溃。

决策

保护模块内只放 @Service / @Component / @RestController 等可后注册的 Bean;JPA @EntityRepository 一律放 boot 期依赖模块(参照 upload 模块的模式)。

理由

JPA 的实体扫描与 Repository 代理在启动早期完成,后加载的类无法注册,报 No qualifying bean / Not a managed type

影响

  • 给保护模块新增功能时,先把实体/仓库落到普通模块,业务逻辑再进保护模块
  • 违反此约束的代码在客户环境直接起不来,属于最高优先级打回项