1
回答
Jfinal 怎么做到后置加载插件
利用AWS快速构建适用于生产的无服务器应用程序,免费试用12个月>>>   

Jfinal 怎么能做到后置加载插件,或者说重新调用configPlugin 方法?

问题场景:比如我想在项目第一次启动时对数据库做页面相关配置成功后,然后加载数据源相关插件或者说调用configPlugin.
 
我看了下代码 波波提供:stopPlugins(),还有Jfinal.stop(),意味着可以重新加载,不过用了下不起作用。
 
举报
共有1个答案 最后回答: 5年前

这个之前我也遇到类似的需求,是这样解决的:首先在你的yourConfig里面判断下是否已经初始化配置:

this.loadPropertyFile("db.ini");
		if (this.getPropertyToInt("isDBConfig") == 1) {//判断是否已经初始化
			DruidPlugin druidPlugin = new DruidPlugin(
					this.getProperty("jdbcUrl"), this.getProperty("username"),
					this.getProperty("password"));
			druidPlugin.addFilter(new StatFilter());  
			config.add(druidPlugin);
			AutoTableBindPlugin autoTableBindPlugin = new AutoTableBindPlugin(
					druidPlugin, TableNameStyle.LOWER);
			autoTableBindPlugin.addJars(PLUGINJARS);
			autoTableBindPlugin.setShowSql(true);
			config.add(autoTableBindPlugin);
		}
如果没有初始化,在相关初始化方法中手动启动相关插件:

DruidPlugin druidPlugin = new DruidPlugin(
					pro.getProperty("jdbcUrl"), pro.getProperty("username"),
					pro.getProperty("password"));
			druidPlugin.addFilter(new StatFilter());
			druidPlugin.start();
			DataSource dataSource = druidPlugin.getDataSource();
AutoTableBindPlugin autoTableBindPlugin = new AutoTableBindPlugin(
							druidPlugin, TableNameStyle.LOWER);
					autoTableBindPlugin.addJars(SysConfig.PLUGINJARS);
					autoTableBindPlugin.setShowSql(true);
					autoTableBindPlugin.start();
如果已经配置,直接走yourconfig的配置。

--- 共有 4 条评论 ---
缪斯的情人回复 @mrguo : 这个在jfinal-ext里面应该有,可以根据plugin名字启动相关插件 5年前 回复
郭恩洲_OSC博客谢谢 提供个pluginManager管理类 很灵活管理plugin行为和状态 5年前 回复
缪斯的情人回复 @mrguo : 当然不是手动重启,是在你的初始化程序里调用start()插件的方法,如第二段代码所示 5年前 回复
郭恩洲_OSC博客我现在是你这种思想,不过就是当第一次数据库初始化成功后,哪些数据源插件没有加载,需要重新加载调用,你说的手动操作 是手动重启么 5年前 回复
顶部