JFinal源码走读_3_ActiveRecord初始化

本文详细探讨了JFinal中ActiveRecord的初始化过程,从activerecord实例化到c3po和activerecordplugin的初始化,深入解析了TableBuilder的build方法及doBuild方法,完成了数据库表与Model的映射,实现ORM功能。
摘要由CSDN通过智能技术生成

ActiveRecord初始化

activerecord是作为插件来支持jfinal webapp的,所以其初始化入口就在start(),此方法是在initPlugin()后startPlugin()时被调用的
startPlugins方法详情

    private static void startPlugins() {
        // 获取配置的plugins集合
        List<IPlugin> pluginList = plugins.getPluginList();
        if (pluginList == null)
            return;
        // IPlugin只有两个方法分别控制插件的开始和停止,此处应用了观察者模式来统一管理plugin的生命周期
        for (IPlugin plugin : pluginList) {
            try {
                // process ActiveRecordPlugin devMode
                if (plugin instanceof com.jfinal.plugin.activerecord.ActiveRecordPlugin) {
                    com.jfinal.plugin.activerecord.ActiveRecordPlugin arp = (com.jfinal.plugin.activerecord.ActiveRecordPlugin) plugin;
                    if (arp.getDevMode() == null)
                        arp.setDevMode(constants.getDevMode());
                }
                // 对于具体plugin的初始化,暂时不做深究
                if (plugin.start() == false) {
                    String message = "Plugin start error: "
                            + plugin.getClass().getName();
                    log.error(message);
                    throw new RuntimeException(message);
                }
            } catch (Exception e) {
                String message = "Plugin start error: "
                        + plugin.getClass().getName() + ". \n" + e.getMessage();
                log.error(message, e);
                throw new RuntimeException(message, e);
            }
        }
    }

activerecord实例化
// process ActiveRecordPlugin devMode
                if (plugin instanceof com.jfinal.plugin.activerecord.ActiveRecordPlugin) {
                    com.jfinal.plugin.activerecord.ActiveRecordPlugin arp = (com.jfinal.plugin.activerecord.ActiveRecordPlugin) plugin;
                    if (arp.getDevMode() == null)
                        arp.setDevMode(constants.getDevMode());
                }
      /**
     * 配置插件
     */
    public void configPlugin(Plugins me) {
        // 配置C3p0数据库连接池插件
        C3p0Plugin c3p0Plugin = new C3p0Plugin(getProperty("jdbcUrl"),
                getProperty("user"), getProp
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值