service 层注入不同的数据源_降龙-第15章:MVC之Service层包扫描及Bean的构建

4d4c6d8e3a2ece1c7605b6f12858b9ca.png

本章和第14章内容上差不多,主要区别的是Service层的代码会有依赖注入,需要在解析扫描类的时候同时解析成员变量引入的类。

ddead6efee5c31db7c584dd9854e6b30.png

首先在之前的MVC配置初始化方法里面加入Service层配置初始化方法,然后实现初始化方法里面的逻辑。

cca775c20c51c519ce79c3815cc45dcc.png

和上一章一样,读取配置后加载包资源,扫描编译文件和jar包文件。

59bb82b1f420a3981f79994feb73de86.png

e96bb22ef578af489575b03e7ab5fa85.png

扫描文件和扫描jar代码和之前​dao层的操作一样。​

ce883ab6463b9ee179fb51200c81a52e.png

这里的区别点是,在service层由于会有交叉引用,在解析Bean对象的时候,可能当前Bean对象已经被别的类先解析了,所以在当前类被扫描到时,解析前需要先判断一下是否之前被解析过了。如果没有被解析则在解析获取代理对象的同时还要处理类的成员变量中动态注入的Bean,这些Bean如果没有被解析也需要先解析掉才可以给当前类设置实例成员变量,所以最后就有一个设置自动注入类的方法。不过该方法本章先不实现,因为还缺少一个帮助类的注解扫描。

a179a8c3de909caba41c5d6b0cdf45af.png

最后这个获取Bean对象的方法也和dao层也有区别,由于在设置自动注入方法里面需要用到改方法,改方法就必须保证能返回Bean对象,所以针对交叉引用情况需要判断类的实例是否已经被创建,如果没创建则需要先创建一个再返回。这样整个Service层的扫描就完成了网状链式的解析,保证了每个类都能正确解析自身又能解析到成员变量的Bean对象。

下一章把​MyComponent注解的Bean扫描实现掉,然后把设置自动注入的方法也实现掉,这样最后就只剩Controller的扫描解析了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值