NutzCN Logo
精华 nutzboot-的回调接口
发布于 2227天前 作者 qq_6d1ec279 2024 次浏览 复制 上一个帖子 下一个帖子
标签:

nutzboot有没有一个回调接口处于数据访问层,javabean初始化完成,但是starter还没有初始化的这个阶段,
现在碰到一个问题:
我想把建表语句放在这个阶段执行,因为后续的starter会依赖数据库表,如果没有建表就直接报错了;

6 回复

可以在@IocBean(create="init") 的init方法里面做,其他依赖该表的starter,实现ServerFace,然后在starter方法里面操作

具体顺序可以查阅NbApp类的源码

最好能有个参数设置starter的执行顺序,这样我可以自定义一个starter优先级最高,放在首位执行,这样做会更合理写,毕竟starter之间也有可能存在依赖关系的;

  * 启动整个NbApp
     */
    public void _run() throws Exception {
        Stopwatch sw = Stopwatch.begin();

        // 各种预备操作
        this.prepare();
################################################
#########最好能在这里给个回调能够在ioc容器初始化完,但是starter还没有开始的时候调用
#################################################################################3
        // 依次启动
        try {
            ctx.init();

            ctx.startServers();

            if (ctx.getMainClass().getAnnotation(IocBean.class) != null)
                ctx.getIoc().get(ctx.getMainClass());

            sw.stop();
            log.infof("NB started : %sms", sw.du());
            synchronized (lock) {
                lock.wait();
            }
        }
        catch (Throwable e) {
            log.error("something happen!!", e);
        }
        // 收尾
        ctx.stopServers();
        ctx.depose();
    }

如上代码,最好在prepare方法和init方法之间给给个回调扩展,这个地方还是需要一些人工干预的;整体感觉就是starter一旦定义好了就没法控制他们运行了(一旦涉及到依赖关系的问题),需要一起事件回调暴露出来;

嗯嗯,我想想怎么搞哦(´-ω-`)

已添加 NbAppEventListener , 比你想要的更多更全了

添加回复
请先登陆
回到顶部