注解参考
本页按项目列出公开注解。完整语义以对应章节和当前源码为准。
Javax Inject
| 注解 | 目标 | 用途 |
|---|---|---|
javax.inject.Inject | 构造器、字段、Setter | 选择构造器或注入成员 |
javax.inject.Named | 类、注入点、参数 | 声明/选择命名实例 |
Rain 没有要求所有 Bean 标 @Component。具体类通常可直接创建;接口需要 AutoBind、Factory 或手工绑定。
Rain API 与 DI
| 注解 | 包 | 用途 |
|---|---|---|
@AutoBind | rain.api.annotation | 标记接口,由 AppLoader 收集实现并按名称绑定 |
@LoadBy | rain.api.annotation | 把注解、接口或父类命中的扫描项交给 Loader |
@Nullable | rain.api.annotation | API 层可空标记 |
@Config | rain.di | 构造器参数、字段、Setter 注入配置 |
@Nullable | rain.di | DI 创建器允许缺失依赖 |
@NotSearch | rain.di | 禁止按 Kotlin 主构造器搜索创建路径 |
@LoadBy(value, mastBean = true) 的 mastBean 控制加载目标是否必须是可实例 Bean。SmartAccess Access 接口使用 false,因为接口本身需要生成实现。
Event
| 注解 | 目标 | 关键参数 |
|---|---|---|
@EventListener | 类 | 触发 EventListenerLoader |
@SubscribeEvent | 方法 | weight:RECORD/HIGHEST/HIGH/NORMAL/LOW/LOWEST |
详情见Event 事件总线。
Job
| 注解 | 目标 | 关键参数 |
|---|---|---|
@CronTab | 类 | 触发 JobLoader |
@Cron | 无参数方法 | value 间隔、async、runWithStart |
当前 value 不是标准 Cron 表达式,见Job。
Rain Controller
| 注解 | 目标 | 用途 |
|---|---|---|
@Path | Controller 类 | Controller/父类路径 |
@Before | Controller 方法或 ProcessProvider 类 | 前置过程;weight、only、except |
@After | Controller 方法或 ProcessProvider 类 | 后置过程 |
@Catch | Controller 方法或 ProcessProvider 类 | 指定异常类型的过程 |
@Global | Before/After/Catch 方法 | 提升到当前 RootRouter |
@ProcessBy | 业务注解 | 关联一个或多个 ProcessProvider |
@ProcessFilterBy | 业务/过程声明位置 | 关联启动期 ProcessFilter |
详情见 Controller 模块 和 SmartWeb 过程链。
类增强与 Hook
| 注解 | 目标 | 用途 |
|---|---|---|
@EnchantBy | 自定义类注解 | 关联 Enchanter |
@HookBy | 自定义方法注解 | 通过完整类名关联 HookRunnable |
@InstanceMode | HookRunnable 类 | 按目标实例建立 Hook 信息 |
详情见类增强与 Hook。
测试
| 注解 | 目标 | 用途 |
|---|---|---|
@RainTest | JUnit 5 测试类 | 使用 RainTestEngine、AppClassloader 和 DI 实例 |
SmartWeb Controller
| 注解 | 目标 | 用途 |
|---|---|---|
@WebController | 类 | 触发 WebControllerLoader |
@WebAction | 方法 | 路径 + 自定义 HTTP methods |
@GetAction | 方法 | GET |
@PostAction | 方法 | POST |
@PutAction | 方法 | PUT |
@DeleteAction | 方法 | DELETE |
@PatchAction | 方法 | PATCH |
@GetPostAction | 方法 | GET 与 POST |
@RequestMethods | 自定义 Action 注解 | 声明该注解对应的 HTTP 方法 |
@NewWs | 方法 | 声明 WebSocket Action |
自定义 Action 注解必须提供 value: String 路径属性。
SmartWeb 参数
| 注解 | 参数/类 | 来源 |
|---|---|---|
@PathVar | 参数 | 路径变量 |
@RequestParam | 参数 | 查询/表单参数 |
@RequestBody | 参数 | JSON Body |
@SessionValue | 参数 | Session,同名 key |
@CookieValue | 参数 | Cookie,同名 key |
@ContextValue | 参数 | ActionContext |
@ContextValues | Controller 类 | 声明多个默认 Context 参数名 |
详情见请求与参数绑定。
SmartAccess 核心
| 注解 | 目标 | 用途 |
|---|---|---|
@Model | 实体类 | 将类加入 default 数据库模型 |
@Database("name") | 实体类、Access 接口 | 选择数据库 |
@MetadataProvider | Access 接口 | 自定义实体/主键泛型解析 |
@ProvideAccessTemple | Access 模板接口 | 标记生成模板链 |
@Transactional | 方法 | Rain Hook 同步事务,可指定 dbList |
SmartAccess 查询
| 注解 | 目标 | 用途 |
|---|---|---|
@Select(query) | Access 方法 | 显式查询字符串 |
@Execute(query) | Access 方法 | 显式修改查询 |
@Lock(mode) | JPA Access 方法 | 设置 JPA LockModeType |
@NativeQuery | Access 方法 | 原生查询意图;当前生成路径需版本验证 |
@SearchRewriter | 实体类 | 指定查询 QueryRewriter |
@ExecuteRewriter | 实体类 | 指定修改 QueryRewriter |
@Like | 声明存在 | 当前主要派生语法使用方法名后缀 |
@MoreThan 等 | 声明存在 | 当前 Maker 是否消费需按版本验证 |
不要仅因注解已声明就假设实现完整。SmartAccess 主要可用路径与空壳模块见实现模块与成熟度。
同名与导包注意
- Rain 同时有两个
Nullable,检查完整包名。 - SmartAccess 的
@Database同时用于实体与 Access,但注解源码 Target 当前只声明 CLASS,二者都属于类级使用。 - Controller 的
@Path来自 Rain,不是 SmartWeb 包。 @Transactional来自 SmartAccess,不是 Spring。- JPA 实体注解使用
jakarta.persistence,不是旧javax.persistence。