JFinal如何实现依赖注入?

如题。

就像是Spring那样的。

评论区

zhenquande

2017-05-05 14:54

不能

JFinal

2017-05-05 16:58

jfinal 自身不支持依赖注入,但可以通过一个拦截器来扩展支持,这里是 jfinal 老版本提供的 spring 插件,曾经支持过:http://git.oschina.net/jfinal/jfinal/tree/jfinal-1.9/src/com/jfinal/plugin/spring?dir=1&filepath=src%2Fcom%2Fjfinal%2Fplugin%2Fspring&oid=17af7ca4a80446efc6853e8ceff66e20a279e758&sha=aa4a95af60a1dc12dfd649bd208de473dcfb369f

依赖注入主要的好处是方便在注入的时候注入代理类,从而实现 AOP,而 jfinal 有更加方便的 AOP 实现,也就没必要去支持。

当然依赖注入也方便做单元测试,因为它规定了你的类之间的依赖是通过setter或者构造器完成的,保持了松耦合,但是这个与依赖注入没有必然的逻辑关系,你完全可以在没有依赖注入的时候这样来写代码

依赖注入要引入 IOC 容器、XML、注解等概念,不符合 jfinal 极简设计理念

dafeizi

2018-02-05 16:38

@JFinal 依赖注入主要的好处是方便在注入的时候注入代理类,从而实现 AOP,而 jfinal 有更加方便的 AOP 实现,也就没必要去支持。

有示例吗?

JFinal

2018-02-05 21:40

@dafeizi 看下 jfinal AOP 这一章的文档,里面有例子:http://www.jfinal.com/doc/4-2

此外,首页下载 jfinal demo 中也有例子

永字诀

2020-05-22 22:01

@JFinal 感觉翻到了一个“真香”,现在不是有依赖注入么

JFinal

2020-05-22 23:57

@永字诀 jfinal 的依赖注入与其它框架很不一样,以前不实现这个功能的理由如下:

需要引入大量繁杂而多余的概念,例如:Aspect、Advice、Joinpoint、Poincut、Introduction、Weaving、Around等等,并且需要引入IOC容器并配合大量的XML或者annotation来进行组件装配。

而后续的 jfinal 版本,找到了避开了上述缺点的方案,例如完全无需 IOC 容器、XML 配置,这才加入了依赖注入的功能

而 spring 的实现方案站在 jfinal 的高度一点儿也 "不香"

jfinal 是一直在迭代式前进的,但既便如此,在引入新功能的时候也必定要坚持初心:极简

JFinal

2020-05-22 23:58

@永字诀 你看一下 jfinal 依赖注入源码就知道有多极简,200 多行代码,主要就一个类来实现该功能:
https://gitee.com/jfinal/jfinal/blob/master/src/main/java/com/jfinal/aop/AopFactory.java