gpt4 book ai didi

dependency-injection - Spring .Net 配置流利

转载 作者:行者123 更新时间:2023-12-01 06:56:42 24 4
gpt4 key购买 nike

我需要在项目中使用 Spring .Net 并且正在探索配置选项。我能找到的关于 Spring .Net 配置的所有信息都是配置文件。 Spring 是否支持代码中的配置?我用过 CaSTLe 和 Ninject,两者似乎都提供了这个。我找到了声称要增加支持的项目,但我不想要一些会在 6 个月内死掉的仿冒项目。我在博客中找到了似乎表明 Spring 支持这一点的引用资料,但我找不到任何文档!

第 2 部分可能是您是否会推荐 Spring .Net 而不是 Windsor,因为它不能支持流畅的配置?我知道这两个都是很棒的 IoC 容器,但是我从事的项目有大量用于 Spring 配置的配置文件,我讨厌它。

最佳答案

不,Spring.NET 的当前版本(1.3)仅支持 XML 配置。已经讨论过在 future 的版本中支持代码即配置,但这还没有实现。

在我看来,温莎城堡远胜到 Spring.NET。我想不出CaSTLe Windsor 没有的Spring.NET 的单一功能。另一方面,CaSTLe Windsor 具有以下 Spring.NET 中不可用的功能:

  • 代码作为配置
  • 基于约定的配置
  • 更多生命
  • 自定义生命周期
  • 对象图退役
  • 接口(interface)/基类到具体类型的显式映射
  • 基于类型的分辨率
  • 模块化配置(安装人员)
  • 对装饰器的内置支持
  • 打字工厂

  • 可能还有其他我忘记的功能...

    看来我在这里触发有点太快了,尽管为了我的辩护,Spring.NET 文档还指出当前版本中只有 XML 配置。

    然而,事实证明,如果对于某些上下文,可以使用非常原始的 API,使您能够在没有 XML 的情况下配置上下文。这是一个例子:
    var context = new GenericApplicationContext();
    context.RegisterObjectDefinition("EggYolk",
    new RootObjectDefinition(typeof(EggYolk)));
    context.RegisterObjectDefinition("OliveOil",
    new RootObjectDefinition(typeof(OliveOil)));
    context.RegisterObjectDefinition("Mayonnaise",
    new RootObjectDefinition(typeof(Mayonnaise),
    AutoWiringMode.AutoDetect));

    请注意此 API 如何非常接近地反射(reflect) XML 配置模式。因此,您不会从 IObjectDefinitionRegistry 获得任何流畅的 API。接口(interface),但至少有一个与 XML 分离的 API。在此之上构建一个流畅的 API 至少在理论上是可能的。

    关于dependency-injection - Spring .Net 配置流利,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4558638/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com