2019独角兽企业重金招聘Python工程师标准>>>

背景:

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.classsif(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载入controllerme.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

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

  1. Spring Boot常见企业开发场景应用、自动配置原理结构分析

    读者应具备: Spring SpringMVC服务器端开发基础 Maven基础 本篇主要介绍Spring Boot在企业开发中常见场景的使用.以及Spring Boot的基本原理结构. 以下为本篇设计 ...

  2. Spring Boot(03)——自动配置

    Spring Boot 自动配置 Spring Boot的自动配置功能会根据Classpath中的Class为我们自动创建相应的bean.比如当classpath下存在MongoClient.clas ...

  3. nacos动态路由配置(二)-微服务启动自动配置网关路由

    经过上一篇我们发现nacos通过配置动态路由routes-api-gateway.yaml配置json,监听动态路由变化即可实现动态路由,非常的银杏化. 那么有的小伙伴发现配置json也比较麻烦,有没 ...

  4. java快速注释怎么配置_详解如何在低版本的Spring中快速实现类似自动配置的功能...

    在 Spring 4 后才引入了 @Conditional 等条件注解,它是 Spring Boot 中实现自动配置的最大功臣! 那么问题来了:如果我们还在使用 Spring 3.x 的老版本,这时候 ...

  5. 关于IPv6自动配置地址 RA里的A、M、O标记位(纯理论无实验)

    ipv6的地址自动配置有两种方式,分别是SLAAC与DHCPv6,其中DHCPv6还分为有状态和无状态,如图: 今天我们要学的就是ICMPv6 RA(Router Advertisement)包里面的 ...

  6. Spring Boot 面试杀手锏:自动配置原理

    欢迎关注方志朋的博客,回复"666"获面试宝典 不论在工作中,亦或是求职面试,Spring Boot已经成为我们必知必会的技能项.除了某些老旧的政府项目或金融项目持有观望态度外,如 ...

  7. SpringBoot面试杀手锏——自动配置原理

    欢迎关注方志朋的博客,回复"666"获面试宝典 来源:blog.csdn.net/u014745069/ article/details/83820511 引言 不论在工作中,亦或 ...

  8. SpringBoot实战之SpringBoot自动配置原理

    www.cnblogs.com/leihuazhe/p- SpringBoot 自动配置主要通过 @EnableAutoConfiguration, @Conditional, @EnableConf ...

  9. SpringBoot_配置-@Conditional自动配置报告

    前面我们通过分析HttpEncodingAutoConfiguration,给大家讲解了一下自动配置的原理,那么在自动配置的时候呢,就是这个自动配置要能够生效,他有一些判断,conditional这些 ...

最新文章

  1. C++面试题:list和vector有什么区别
  2. 只需5分钟即可启动并运行分层架构:: Spring Boot第1部分
  3. centos开发环境安装的备忘
  4. js中变量作用域的小理解
  5. (Matlab问题解决)运行matlab程序后,工作区不能显示变量
  6. 【kafka】kafka offset 的存储 (存储zookeeper 与 存储 kafka)
  7. nettry 入站事件如何传递到下一个handler
  8. 在Ubuntu 18.04上安装PostgreSQL 11和PgAdmin4
  9. LeetCode刷题——167. 两数之和 II - 输入有序数组
  10. 关于参数的写法规则,参数引用几种写法
  11. 异贝,通过移动互联网技术,为中小微实体企业联盟、线上链接、线上线下自定义营销方案推送。案例7
  12. 【搬运】各种知乎段子
  13. 手机、电脑录制内部声音的方法
  14. java通过txt读取迷宫地图_java寻找迷宫路径的简单实现示例
  15. 移动硬盘做pe启动盘
  16. 猎企如何制定合理的数据战略?(附数据迁移三大注意点)深度干货
  17. 建议65:总是处理未捕获的异常
  18. 让人又爱又恨的C语言
  19. sql子表求和在总表中显示,并参与搜索
  20. 日野汽车数据作假召开记者招待会

热门文章

  1. 人均年薪250万, 拥有400名博士, 这家AI公司去年亏27亿
  2. 这个AI模型用最少的训练数据学习对象之间的关系
  3. 图深度学习(GraphDL),下一个人工智能算法热点
  4. 使用元学习和推理改善您的模型!
  5. SAP MM MM17里不能修改物料主数据'Purchasing Value Key'字段值?
  6. 干货丨 简述迁移学习在深度学习中的应用
  7. 数据挖掘关联规则挖掘改进算法DHP
  8. 全球顶尖计算机科学家排名,中科大上榜人数全国第一
  9. 托马斯·弗里德曼:美政府应研究任正非的提议
  10. 深度学习背后的基础-神经网络揭秘