首页
App
&
Coffee
文档
项目
分享
反馈
俱乐部
登录
注册
JFinal如何实现依赖注入?
nelsonnick
2017-05-05 14:37
如题。
就像是Spring那样的。
项目:
JFinal
2
2
评论区
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
回复
发送
我要反馈
热门反馈
扫码入社