• Spring----IoC Service Provieder


    IoC Service Provider的职责

    参考:书籍《Spring揭秘》

               博客 http://www.voidcn.com/article/p-wyrdqvqk-beb.html

    1.业务对象的构建管理

    在IoC场景中,业务对象无需关心锁依赖的对象如何构建如何取得,但这部分工作始终需要有人来做。所以,IoC Service Provider需要将对象的构建逻辑从客户端对象(这里指代某个对象或者某种服务的对象,如果对象A需要引用对象B,那么A就是B的客户端对象)那里剥离出来,以免这部分逻辑污染业务对象的实现。

    比如我们被注入对象是ServiceImpl通过setter注入的方式可以直接获取到依赖对象IDao,建立依赖关系。而此时的IDao业务对象并不是由ServiceImple来构建的。IoC Service Provider 的职责之一就是依赖对象的构建管理工作。将依赖对象的构建逻辑从客户端隔离,接触了相应的耦合。

    2.业务对象间的依赖绑定:

    将对象所依赖的对象注入绑定,从而保证每个业务对象在使用的时候,可以处于就绪状态。

    IoC Service Provider 通过结合之前的构建和管理所有的业务对象,以及各个业务对象之间可以识别的依赖关系,将这些对象所依赖的对象注入绑定,从而保证每个业务对象在使用被注入对象时候,被注入的对象处于就绪状态。

    ***************************************************************************************************************************************************************

    那么问题来了,IoC Service Provider 到底是怎么管理对象之间的依赖关系,怎么实现的呢?

    好比我们去酒吧喝酒(比作被注入对象),此时服务员在(比作Ioc), 我们想要啤酒(依赖注入对象)。但是服务员此刻是个新人,并不知道啤酒放在哪里,你若要想喝啤酒,服务员必须知道啤酒和库存的关系。对于Ioc Service Provider  来说的话,同样的需要知道自己所管理和掌握的被注入对象与依赖注入对象之前的对应关系,才能准确无误的去为被注入对象提供注入服务, 那么Ioc Service Provider 就需要寻求一些能够记录被注入对象与依赖对象之间的关系。

    当前流行的IoC Service Provider产品使用的注册对象管理信息的主要方式有:

    1.直接编码方式

    2.配置文件方式   

    3.元数据方式

    Guice是一种DI框架

     

     

  • 相关阅读:
    [动态规划]保存子问题的结果
    [字符串]第一个不重复的字符
    [抽象建模问题]扑克牌的顺子判断
    [算法]处理连续小段问题
    [动态规划]最长回文子串
    违法
    TCP的拥塞控制
    SpringBank 开发日志 一种简单的拦截器设计实现
    SPFILEOPENBANKDB.ORA 手动编辑产生问题
    springbank 开发日志 springbank是如何执行一个handler的requestMapping对应的方法的
  • 原文地址:https://www.cnblogs.com/levontor/p/11040454.html
Copyright © 2020-2023  润新知