package com.dsideal.Res; import com.dsideal.Res.Base.Controller.BaseController; import com.dsideal.Res.Index.IndexController; import com.dsideal.Res.Interceptor.*; import com.dsideal.Res.Model._MappingKit; import com.dsideal.Res.Plugin.YamlProp; import com.dsideal.Res.Res.Controller.ResourceController; import com.dsideal.Res.Util.FileUtil; import com.dsideal.Res.Util.LogBackLogFactory; import com.jfinal.config.*; import com.jfinal.kit.Prop; import com.jfinal.plugin.activerecord.ActiveRecordPlugin; import com.jfinal.plugin.activerecord.dialect.MysqlDialect; import com.jfinal.plugin.druid.DruidPlugin; import com.jfinal.plugin.redis.RedisPlugin; import com.jfinal.server.undertow.UndertowServer; import com.jfinal.template.Engine; import java.io.File; public class ResApplication extends JFinalConfig { public static String getEnvPrefix() { String myEnvVar = System.getenv("WORKING_ENV"); if (myEnvVar == null) { myEnvVar = "dev"; } return myEnvVar; } public static void main(String[] args) { System.out.println("当前环境: " + getEnvPrefix()); UndertowServer.create(ResApplication.class, "undertow.properties").start(); } /** * 配置常量 */ public static Prop PropKit; static { //加载配置文件 String configFile = "application_{?}.yaml".replace("{?}", getEnvPrefix()); PropKit = new YamlProp(configFile); } @Override public void configConstant(Constants me) { //使用LogBack me.setLogFactory(new LogBackLogFactory()); // 设置静态根目录为上传根目录 me.setBaseUploadPath(PropKit.get("uploadTempPath")); } /** * 配置路由 */ @Override public void configRoute(Routes me) { //默认页面 me.add("/", IndexController.class); //资源基础管理 me.add("/base", BaseController.class); //资源管理 me.add("/res", ResourceController.class); } @Override public void configEngine(Engine engine) { } @Override public void configPlugin(Plugins me) { DruidPlugin plugin = new DruidPlugin(PropKit.get("mysql.jdbcUrl"), PropKit.get("mysql.user"), PropKit.get("mysql.password").trim(), PropKit.get("mysql.driverClassName")); me.add(plugin); // 配置ActiveRecord插件 ActiveRecordPlugin arp = new ActiveRecordPlugin("master", plugin); arp.setDialect(new MysqlDialect()); //加入ORM配置 _MappingKit.mapping(arp); //遍历sql目录下所有的sql文件 File sqlDir; String basePath = ResApplication.class.getResource("/").getPath(); sqlDir = new File(basePath + "/Sql"); File[] sqlFiles = sqlDir.listFiles(); for (File sqlFile : sqlFiles != null ? sqlFiles : new File[0]) { //只加载.sql文件 if (sqlFile.getName().indexOf(".sql") > 0) { arp.addSqlTemplate("/Sql/" + sqlFile.getName()); } } //加载 me.add(arp); // 用于缓存模块的redis服务 RedisPlugin redis = new RedisPlugin("Redis", PropKit.get("redis.ip"), PropKit.getInt("redis.port"), 10 * 1000, PropKit.get("redis.password")); //启动redis组件 me.add(redis); } /** * 配置全局拦截器 */ @Override public void configInterceptor(Interceptors me) { //注册参数数字检查器 me.add(new IsNumbericInterceptor()); //注册非空拦截器 me.add(new EmptyInterceptor()); //注册Ids检查是不是数字的检查器 me.add(new CheckIdsInterceptor()); //注册一个GUID号的检查器 me.add(new IsGuidInterceptor()); //检查是不是系统管理员 me.add(new IsSysAdminInterceptor()); //注册一个检查输入文本长度的拦截器 me.add(new LengthInterceptor()); } /** * 配置处理器 */ @Override public void configHandler(Handlers me) { } /** * 在jfinal启动完成后马上执行 */ @Override public void onStart() { //打印 启动Logo String path = ResApplication.class.getClassLoader().getResource("logo.txt").getPath(); File file = new File(path); System.out.println(FileUtil.txt2String(file)); } }