路由和插件模块初始化顺序的问题

        你好,我是郭世雄,一名河北工程大学大四的学生,我在使用jfinal的过程中发现了一个问题,对原有的项目有一定的影响,所以想问问jfinal这么更改的原因。
        在集成shiro插件的时候需要给shiro插件传路由对象,在jfinal3.1中,是先初始化route然后是plugin对象,如图1所示,之后我把版本升级到了3.3,项目一直报空指针一场,于是跟着jfinal框架调试了一边,发现route初始化的顺序在plugin之后了,导致项目的异常,想知道为什么这么更改,有没有什么解决方案,我是今天刚用的jfinal框架 ^_^ ,有什么不当的地方还请见谅。如果对我的表述不太清楚的话最后有详细的流程
                                                                   Email:shixiong.guo@foxmail.com

1.png图1


2.png图2

1 现需要将shiro以插件的方式集成到jfinal中
2 shiro需要路由也就是route的依赖
3 于是自定义config类,继承JfinalConfig
4 在自定义config类中,设置全局属性route
5 初始化configRoute方法的时候将route属性赋给全局route
6 初始化configPlugin,方法内需要route依赖

如果用3.1,正常执行,如果用3.3,由于上面所说的顺序问题,导致项目启动失败

评论区

JFinal

2018-01-07 21:06

是由于 jfinal 3.3 将 configPlugin() 方法提到 configRoute() 之前调用造成的,最简单的解决办法是在 src/main/resources 目录下面创建一个 com.jfinal.core 的包,然后将 com.jfinal.core.Config.java 代码 copy 到那个包里,将 configRoute() 这行代码向前挪一个位置

jfinal 3.4 会解决这个问题

JFinal

2018-01-07 21:07

如果想更省事,还可以暂时用 jfinal 3.2 这个版本

JFinal

2018-01-07 21:10

补充一下为什么 jfinal 3.3 改变了 configPlugin() 原来的次序:是因为有人提出需求,希望从数据库中加载 configRoute() 中用到的配置项,也就是说希望在 configRoute() 方法中可以使用 ActiveRecordPlugin 的功能,而这个 ActiveRecordPlugin 是在 configPlugin() 中被加载的

一开始没想到这个调整会对 ShiroPlugin 有影响

江左笑笑生

2018-01-07 21:15

@JFinal 好的好的,非常谢谢

热门反馈

扫码入社