Skip to content

注解参考

本页按项目列出公开注解。完整语义以对应章节和当前源码为准。

Javax Inject

注解目标用途
javax.inject.Inject构造器、字段、Setter选择构造器或注入成员
javax.inject.Named类、注入点、参数声明/选择命名实例

Rain 没有要求所有 Bean 标 @Component。具体类通常可直接创建;接口需要 AutoBind、Factory 或手工绑定。

Rain API 与 DI

注解用途
@AutoBindrain.api.annotation标记接口,由 AppLoader 收集实现并按名称绑定
@LoadByrain.api.annotation把注解、接口或父类命中的扫描项交给 Loader
@Nullablerain.api.annotationAPI 层可空标记
@Configrain.di构造器参数、字段、Setter 注入配置
@Nullablerain.diDI 创建器允许缺失依赖
@NotSearchrain.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 间隔、asyncrunWithStart

当前 value 不是标准 Cron 表达式,见Job

Rain Controller

注解目标用途
@PathController 类Controller/父类路径
@BeforeController 方法或 ProcessProvider 类前置过程;weight、only、except
@AfterController 方法或 ProcessProvider 类后置过程
@CatchController 方法或 ProcessProvider 类指定异常类型的过程
@GlobalBefore/After/Catch 方法提升到当前 RootRouter
@ProcessBy业务注解关联一个或多个 ProcessProvider
@ProcessFilterBy业务/过程声明位置关联启动期 ProcessFilter

详情见 Controller 模块SmartWeb 过程链

类增强与 Hook

注解目标用途
@EnchantBy自定义类注解关联 Enchanter
@HookBy自定义方法注解通过完整类名关联 HookRunnable
@InstanceModeHookRunnable 类按目标实例建立 Hook 信息

详情见类增强与 Hook

测试

注解目标用途
@RainTestJUnit 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
@ContextValuesController 类声明多个默认 Context 参数名

详情见请求与参数绑定

SmartAccess 核心

注解目标用途
@Model实体类将类加入 default 数据库模型
@Database("name")实体类、Access 接口选择数据库
@MetadataProviderAccess 接口自定义实体/主键泛型解析
@ProvideAccessTempleAccess 模板接口标记生成模板链
@Transactional方法Rain Hook 同步事务,可指定 dbList

SmartAccess 查询

注解目标用途
@Select(query)Access 方法显式查询字符串
@Execute(query)Access 方法显式修改查询
@Lock(mode)JPA Access 方法设置 JPA LockModeType
@NativeQueryAccess 方法原生查询意图;当前生成路径需版本验证
@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

基于 Apache License 2.0 发布