新项目升级到JFinal3.5之后的改变-着重体验自动依赖注入

JFinal自动注入.png

最近,JFinal3.5发布,喜大普奔,我也应JBolt用户的需求,将JBolt进行了升级,实现可配置自动注入开启,支持JFinal3.5的项目生成。具体可以看:JBolt升级日志

这等工作做完后,我着手将客户的正在使用JFinal3.4开发中的项目,快速升级到了JFinal3.5+最新版的JFinal-jetty-server。

升级工作:

1、pom.xml文件里替换成最新版的JFinal3.5和jfinal-jetty-server的2018.11版本

2、在MainConfig.java中 配置常量configConstant里添加开启自动依赖注入

image.png

3、所有Service里之前的public static final Service me=new Service();这类定义 全部删除

4、使用到Service.me.method()这样调用的地方有很多 Controller Interceptor、其他Service、工具类里都用需要替换调用方式改成注入方式。具体如下:

    0)UserService里以前是这样的

image.png

现在删掉这个定义。


    1)Controller中以前是这样的

image.png

现在改成了这样就可以了:

image.png

    2)拦截器里以前有这样用的

image.png

现在改成这样:

image.png

    3) Service里调用其他Service的方式 以前是这样:

image.png

现在改成这样:

image.png

image.png

    4)除了这些使用的地方,还有一些工具类里

以前是这样:

image.png

现在这里要特殊注意了,工具类不是由JFinal管理创建的对象,所以不能使用上面的注入方式。JFinal提供了另一个获取方式:

image.png


这里大家可能会有个疑问,为什么Service也不是jfinal接管创建的 Service里调用其他Service也能使用自动注入注解的方式?

答案在这里:

image.png


当我们在Controller里注入UserService的时候,JFinal会进入到这个注入对象里,遍历他的Field 找到也有@Inject注解的属性,然后自动注入。默认注入深度是3级别。这里特殊注意。

如果你有任何JFinal相关的问题,可以关注JFinal学院公众号:jfinalxueyuan 提问。

希望得到您的转发分享与关注,打造JFinal学院-JFinal社区自己的学院。

JFinal学院QQ群:362557641 JFinal学院

评论区

欲风217

2018-10-23 09:11

弱弱的问一句,自动依赖注入有什么好处呢?

山东小木

2018-10-23 09:25

@欲风217 代码量减少 更合理的架构设计 统一管理对象创建 按需创建和分配 调用者与被调用者解耦 等等

欲风217

2018-10-23 09:39

@山东小木 坦白讲,不是特别明白。特别是「按需创建和分配 调用者与被调用者解耦」是怎么做到的?有没有讲解这个的好文章,推荐下看看 [抱拳]

快乐的蹦豆子

2018-10-23 16:47

注入了就不用各种new了就是解耦,根据不同需求注入不同的impl

prelove

2018-10-25 14:04

写得好详细!

prelove

2018-10-25 14:05

学习了

马小酱

2018-10-28 12:14

BseService 这个里面怎么写的,能分享一下吗

KingTiger

2018-11-01 14:59

是不是少文字了,还是少图片了