首页>代码>JFinal-layui极速开发企业应用系统>/Jfinal-layui/src/main/java/com/qinhailin/common/config/MainConfig.java
package com.qinhailin.common.config;

import com.alibaba.druid.filter.stat.StatFilter;
import com.alibaba.druid.wall.WallFilter;
import com.jfinal.config.Constants;
import com.jfinal.config.Handlers;
import com.jfinal.config.Interceptors;
import com.jfinal.config.JFinalConfig;
import com.jfinal.config.Plugins;
import com.jfinal.config.Routes;
import com.jfinal.core.JFinal;
import com.jfinal.kit.Prop;
import com.jfinal.kit.PropKit;
import com.jfinal.template.Engine;
import com.jfinal.template.source.ClassPathSourceFactory;
import com.qinhailin.common.directive.MyNowDirective;
import com.qinhailin.common.handler.CommonHandler;
import com.qinhailin.common.intercepor.ExceptionInterceptor;
import com.qinhailin.common.intercepor.LoggerInterceptor;
import com.qinhailin.common.intercepor.SessionInterceptor;
import com.qinhailin.common.kit.DruidKit;
import com.qinhailin.common.model._MappingKit;
import com.qinhailin.common.routes.AutoBindRoutes;
import com.jfinal.ext.interceptor.SessionInViewInterceptor;
import com.jfinal.plugin.druid.DruidPlugin;
import com.jfinal.plugin.ehcache.EhCachePlugin;
import com.jfinal.server.undertow.UndertowServer;
import com.jfinal.json.FastJsonFactory;
import com.jfinal.plugin.activerecord.ActiveRecordPlugin;
import com.jfinal.plugin.activerecord.SqlReporter;
import com.jfinal.plugin.activerecord.dialect.MysqlDialect;

public class MainConfig extends JFinalConfig {

	/**
	 *运行main方法启动项目
	 */
	public static void main(String[] args) {
		UndertowServer.start(MainConfig.class);
	}
	
	// 使用 jfinal-undertow 时此处仅保留声明,不能有加载代码
	private static Prop p;
	// 先加载开发环境配置,再追加生产环境的少量配置覆盖掉开发环境配置
	static void loadConfig() {
		if (p == null) {
			p = PropKit.use("config-dev.txt").appendIfExists("config-pro.txt");
		}
	}
		
	/**
	 * 配置JFinal常量
	 */
	@Override
	public void configConstant(Constants me) {
		// 读取数据库配置文件
		loadConfig();		
		// 设置当前是否为开发模式
		me.setDevMode(p.getBoolean("devMode"));
		// 设置默认上传文件保存路径 getFile等使用
		me.setBaseUploadPath(p.get("baseUploadPath"));
		// 设置默认下载文件路径 renderFile使用
		me.setBaseDownloadPath(p.get("baseDownloadPath"));
		// 设置error渲染视图
		me.setError403View(WebContant.error403View);
		me.setError404View(WebContant.error404View);
		me.setError500View(WebContant.error500View);
		//Json配置
		me.setJsonFactory(FastJsonFactory.me());
		//开启依赖注入
		me.setInjectDependency(true);
	}
	
	/**
	 * 配置JFinal路由映射
	 */
	@Override
	public void configRoute(Routes me) {
		// 配置ControllerBind注解路由
		AutoBindRoutes autoBindRoutes = new AutoBindRoutes();
		autoBindRoutes.includeAllJarsInLib(!p.getBoolean("devMode"));
		autoBindRoutes.setBaseViewPath(WebContant.baseViewPath);
		me.add(autoBindRoutes);
	}
	
	/**
	 * 配置JFinal插件 数据库连接池 ORM 缓存等插件 自定义插件
	 */
	@Override
	public void configPlugin(Plugins me) {
		// 配置数据库连接池插件
		DruidPlugin dbPlugin = new DruidPlugin(p.get("jdbcUrl"), p.get("user"), p.get("password").trim());

		/** 配置druid监控 **/
		dbPlugin.addFilter(new StatFilter());
		WallFilter wall = new WallFilter();
		wall.setDbType(p.get("dbType"));
		dbPlugin.addFilter(wall);

		// orm映射 配置ActiveRecord插件
		ActiveRecordPlugin arp=new ActiveRecordPlugin(dbPlugin);
		//sql模板
		arp.getEngine().setSourceFactory(new ClassPathSourceFactory());
		arp.addSqlTemplate(WebContant.sqlTemplate);
		// sql输出到日志
		SqlReporter.setLog(!p.getBoolean("devMode"));
		arp.setShowSql(p.getBoolean("devMode"));

		arp.setDialect(new MysqlDialect());
		dbPlugin.setDriverClass(p.get("driverClass"));
		/******** 在此添加数据库 表-Model 映射 *********/
		_MappingKit.mapping(arp);
		
		
		// 添加到插件列表中
		me.add(dbPlugin);
		me.add(arp);
		// 配置缓存插件
		me.add(new EhCachePlugin());
		
	}

	/**
	 * 配置全局拦截器
	 */
	@Override
	public void configInterceptor(Interceptors me) {
		me.addGlobalActionInterceptor(new SessionInViewInterceptor());
		me.addGlobalActionInterceptor(new SessionInterceptor());
		me.addGlobalActionInterceptor(new ExceptionInterceptor());
		me.addGlobalActionInterceptor(new LoggerInterceptor());
	}
	
	/**
	 * 配置全局处理器
	 */
	@Override
	public void configHandler(Handlers me) {
		/** 配置druid监控 **/
		me.add(DruidKit.getDruidStatViewHandler()); 
		// 路由处理
		me.add(new CommonHandler());
	}
	
	/**
	 * 配置模板引擎
	 */
	@Override
	public void configEngine(Engine me) {
		// 这里只有选择JFinal TPL的时候才用
		me.setDevMode(p.getBoolean("engineDevMode"));
		// 当前时间指令
		me.addDirective("now", MyNowDirective.class);
		// 项目根路径
		me.addSharedObject("path", JFinal.me().getContextPath());
		// 项目名称
		me.addSharedObject("projectName", p.get("projectName"));
		// 项目版权
		me.addSharedObject("copyright", p.get("copyright"));
		// 配置共享函数模板
		me.addSharedFunction(WebContant.functionTemp);
		
	}

}	
最近下载更多
werbgd  LV2 2023年5月11日
1986王志飞  LV6 2022年8月12日
bluesky2016  LV15 2022年6月10日
tdcq123  LV14 2022年4月8日
aptx48692716  LV1 2022年2月14日
yangctz  LV24 2022年1月11日
lwp011  LV27 2021年11月5日
ych0790  LV9 2021年4月27日
aaa最代码  LV14 2021年3月4日
飞翔的面包片  LV12 2020年12月24日
最近浏览更多
WBelong  LV7 4月2日
1134116035 2月28日
暂无贡献等级
wwb521  LV7 2月15日
baozhenghua  LV2 2023年12月8日
jiyun2021  LV9 2023年12月2日
泓鼎168  LV19 2023年10月26日
haotzy  LV3 2023年10月8日
明天更美好  LV10 2023年6月17日
lhlhlhlh55 2023年6月12日
暂无贡献等级
暂无贡献等级
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友