Jan 12, 2018 429 PM

作者:wendal

首先的首先

如果你写了一个很棒的starter,恳请告知我们,报个issue即可,码云或者github均可

https://gitee.com/nutz/nutzboot

基本结构

与NB项目一样, starter也是maven项目

org.nutz.boot.starter.NbStarter文件的内容,就是一行一个类全名,可以是无数个.

Starter类怎么写?

首先,她是public的,非抽象的

然后,她通常需要读取一些环境数据,依赖ioc注入

获取上述对象后,你可以做到:

  • 获取ioc容器内的任意对象,从而触发一些行为,例如数据库连接池的初始化
  • 往ioc容器放入新的对象
  • 获取,修改,移除配置信息
  • 她可以不对外提供任何东西,静静地看着你装逼

  • 返回一个IocLoader,只需实现IocLoaderProvider接口,例如就是这样干的
  • 声明为一个"服务器",例如JettyStarter,她启动了一个web容器,这时候你需要实现ServerFace
  • 声明为一个"Filter",例如,她返回一个类似web.xml里面的filter定义,需要实现WebFilterFace接口
  • 声明为一个"Servlet",例如DruidStatViewStarter,它返回一个servlet定义,需要实现WebServletFace
  • 监听session开关?web容器的初始化? 实现WebEventListenerFace就行

NB的生命周期

  • 获取配置信息
  • 初始化AppContext,Ioc容器等一切必要的基础设施
  • 根据org.nutz.boot.starter.NbStarter读取starter类的列表,并将它们加入到ioc容器中
  • 遍历starter,看看是否实现了IocLoaderProvider接口,获取IocLoader,加入ioc上下文
  • 逐一执行各个"服务器"starter
  • 等待程序结束
  • 执行收尾工作

本页面的文字允许在知识共享 署名-相同方式共享 3.0协议和下修改和再使用。