Initialize
实现注入 Service
- 根据文件地址搜索所有带有 service 装饰器的类
- 创建一个优先权队列
- 根据实例化 service 参数的个数推入优先队列
- 判断是否有循环引用 –> throw error
- 实例化各个 service
实现注入 Entity/Collection
Entity 装饰的类是数据库到 Deno 的映射 实例化的时候会为这个类注入 sql 查询的语句 无依赖 优先实例化
实现注入 Controller
controller 是对处理方法和路由的映射
- 将 controller 下的方法收集起来
- 收集完毕以后实例化 controller 并注入依赖
- 将各个方法和对应的路由对应
Session Cookie redirect 以及 sendfile
调用 session this.session this.cookie 全部注入到原型链中 –> ts 支持不友好 DefineProperties 影响 v8 性能优化
过滤器 拦截器 守卫 管道 中间件
http request –> nginx –> convernt to req object –> middleware –> filter –> guard –> router handle –> interceptor –> http response
Body Session Cookir Query
数据收集 –> 依赖注入
数据收集 –> 依据给定的目录导入 services、controllers、entities.. 默认从整个目录下寻找
静态导入的时候会调用装饰器,此刻进行数据收集 包括
- database model 相关信息 放入 ioc 容器中等待实例
- services 推入 ioc 容器中
- controller 、methods 信息 、method 参数信息
实例化顺序 model 优先级 service controller 并且绑定 methods 运行时注入@Body()等