Jfinal 2.1版本,JFinalConfig里自动配置路由的代码实现,直接晒代码

背景:

1、我使用的jfinal2.1;

2、我喜欢用@ActionKey("/admin/index")这一个功能,代码复制性强,不喜欢在controller的类上加注解,不好打理;

3、不想每次新增一个controller类都要在JFinalConfig的public void configRoute(Routes me),手动加入,希望代码自己去找,就可以了;

4、其实,我主要就是用它加载一下controller类文件,我不关心【controllerkey】叫什么名字,因为,我用【actionKey】开发项目;

参考代码:

public class MyConfig extends JFinalConfig {//不相关的代码,这里就不显示了
    /*** 配置路由*/
    public void configRoute(Routes me) {
	//【IndexController.classs】该类可以自己定义,作用,带头大哥,出卖所有controller的位置。
		String filePath =  IndexController.class.getResource("").getPath();
		File fileDir = new File(filePath);
		//包名
		String controllerPackage = fileDir.getAbsolutePath().substring(fileDir.getAbsolutePath().indexOf("com")).replace("\\", ".");
        //包内的controller类名的集合
		List<String> controllerNames = new ArrayList<String>();
		if(fileDir.isDirectory()) {
			File[] list = fileDir.listFiles();
			for(File file : list) {
				String fileName = file.getName();
				//屏蔽内部类,比如:IndexController$1.classs
				if(fileName.indexOf("$") == -1) {
					controllerNames.add(fileName);
					
					String controllerName = fileName.substring(0,fileName.indexOf(".class"));
					String controllerKey = StrKit.firstCharToLowerCase(controllerName);
					try {
						@SuppressWarnings("unchecked")
						Class<Controller> controllerClass = (Class<Controller>) Class.forName(controllerPackage+"."+controllerName);
						//jfinal载入controller
						me.add(controllerKey, controllerClass);
					} catch (ClassNotFoundException e) {
						e.printStackTrace();
					}
				}
			}
		}
    }
}

  当然上面的内部方法,可以封装成一个工具类。起个名字叫 SubRoutes extends Routes 

  

以后代码JfinalConfig的配置路由代码就可以这样写

public void configRoute(Routes me) {
    me.add(new SubRoutes(AdminIndexController.class));//后台路由--加载后台的所有controller类
    me.add(new SubRoutes(WebIndexController.class));//前台路由--加载前台的所有controller类
}

当然,这里

AdminIndexController和WebIndexController不在同一个包里面,是分开的,不在同一个文件夹
打完收工。


转载于:https://my.oschina.net/u/2424312/blog/602428

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值