Controller
Controller 模块提供协议无关的 MVC / 路由抽象。它不直接绑定 HTTP,而是由下游框架实现 Action 注解、上下文、路由匹配与参数转换。
核心抽象
ActionContext:保存用户、运行时异常、返回结果与自定义属性。Router:根据上下文寻找并执行 Action。ActionInvoker:调用具体 Action 方法。ProcessProvider:创建前置、后置或异常处理过程。ProcessFilter:决定某个处理过程是否对 Controller / Action 生效。ControllerLoader:扫描控制器并构建根路由。
通用注解
kotlin
@Path("users")
class UserController {
@Before(weight = 10)
fun authenticate() = Unit
@Catch(error = IllegalArgumentException::class)
fun onBadRequest(error: IllegalArgumentException) = Unit
}@Before、@After 和 @Catch 支持 weight、only 与 except。@Global 将过程提升到全局范围。
自定义过程注解
kotlin
@ProcessBy(ChannelProcess::class)
annotation class Channel(val value: String)通过 @ProcessBy,下游模块可以把业务注解映射为 ProcessProvider。@ProcessFilterBy 则为过程增加条件判断。
返回流程控制
- 抛出
ActionResult(value)可中止后续调用并直接设置结果。 DoNone与SkipMe是供下游处理流程约定使用的特殊标记。
INFO
仓库中的 simple 包提供通用反射调用实现,dss 包提供动静分离路由的技术验证实现。Controller 模块本身更适合作为上层 Web、RPC 或消息处理框架的基础。