司开发的比较成熟、经得起实际考验的服务框架组合起来,通过 #()5.
风格进行再封装屏蔽掉了复杂的配置和实现原理,最终给开发者留出了一套简
单易懂、易部署和易维护的分布式系统开发工具包。
C、#()5 的生命周期
一个 5 从创建到销毁,如果是用 5 %. 来生成:管理 5 的话
#() 上下文中的 5 也类似,如下
DD、实例化一个 5 --也就是我们常说的 ?;
DD、按照 #() 上下文对实例化的 5 进行配置--也就是 注入;
DD、如果这个 5 已经实现了 5 E *? 接口,会调用它实现的
.5 E +.(),方法,此处传递的就是 #() 配置文件中 5 的 (0
值
DD、如果这个 5 已经实现了 5 %.*? 接口,会调用它实现的
.5 %.+.5 %.+5 %.,传递的是 #() 工厂自
身(可以用这个方式来获取其它 5 ,只需在 #() 配置文件中配置一个普
通的 5 就可以);
DD$、如果这个 5 已经实现了 *##(% .(.6.*? 接口,会调用
.*##(% .(.6.+*##(% .(.6.,方法,传入 #() 上下文
(同样这个方式也可以实现步骤 的内容,但比 更好,因为
*##(% .(.6. 是 5 %. 的子接口,有更多的实现方法);
DD&、如果这个 5 关联了 5 .% 接口,将会调用
#.%5-(.( (9 .(+7%.7:.(),方法,
5 .% 经常被用作是 5 内容的更改,并且由于这个是在
5 初始化结束时调用那个的方法,也可以被应用于内存或缓存技术;
DD'、如果 5 在 #() 配置文件中配置了 ((.A.20 属性会自动调用其
配置的初始化方法。
DD>、如果这个 5 关联了 5 .% 接口,将会调用
#.%*-.(.( (9 .(+7%.7:.(),方法、;
DD注:以上工作完成以后就可以应用这个 5 了,那这个 5 是一个
(). 的,所以一般情况下我们调用同一个 (0 的 5 会是在内容地址相
同的实例,当然在 #() 配置文件中也可以配置非 ().,这里我们不做
赘述。
DDB、当 5 不再需要时,会经过清理阶段,如果 5 实现了
/(# 75 这个接口,会调用那个其实现的 0.+,方法;