【问题标题】:Inversion of Control, Spring Framework - system of global instances控制反转,Spring Framework - 全局实例系统
【发布时间】:2009-03-30 16:58:44
【问题描述】:

控制反转本质上只是检索一组已经实例化的对象吗?理论上。我想像 Spring 这样的 IoC 框架实现的更细粒度的细节有更多的功能,但从理论上讲,IoC 容器似乎像一组实例化的 bean(在 Java 世界中)一样运行,然后你可以访问这些 bean。几乎就像您使用单例对象集合一样?

【问题讨论】:

    标签: spring jakarta-ee inversion-of-control


    【解决方案1】:

    在实践中,它部分地掌握了单例,是的。一些 bean 将在需要时多次实例化(取决于配置),但通常您可以使用单个实例 - 特别是如果它们一旦配置为无状态。我喜欢数据在正确连接后“流经”应用程序管道的想法。

    好处是“单一性”只存在于配置中,而不存在于代码中,这使得系统更具可测试性和灵活性。您查看(和公开)应用程序依赖项的方式差异很大。

    【讨论】:

      【解决方案2】:

      虽然已经接受了答案,但我再详细说明一下:

      最初的 spring 主要是关于单例管理。随着自定义范围的引入,出现了特定于 Web 的范围以及创建自己的自定义范围的能力。依靠 AOP 特性,这也允许您尽可能长时间地“保持单例”,因为它使用了一种称为范围代理的技术。这可以让您在单例链的中间引入一个作用域对象——这是您经常使用 threadlocals 的功能。

      所以我想说这是对实例创建的严格控制,以确保每件事都只完成所需的次数,并且最好只为每个请求完成必要的构造。单身管理是过去式。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-06-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多