加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

依赖注入 – Spring .Net配置流畅

发布时间:2020-12-14 04:47:42 所属栏目:百科 来源:网络整理
导读:我需要在项目中使用 Spring .Net并且正在探索配置选项.我能找到关于Spring .Net配置的所有内容都是配置文件. Spring是否支持代码配置?我使用过Castle和Ninject,两者似乎都是本土的.我发现了声称会增加支持的项目,但我不想要一些会在6个月内死掉的项目.我发
我需要在项目中使用 Spring .Net并且正在探索配置选项.我能找到关于Spring .Net配置的所有内容都是配置文件. Spring是否支持代码配置?我使用过Castle和Ninject,两者似乎都是本土的.我发现了声称会增加支持的项目,但我不想要一些会在6个月内死掉的项目.我发现博客中的引用似乎表明Spring支持这一点,但我找不到任何文档!

第2部分可能会推荐Spring .Net而不是Windsor知道它不能支持流畅的配置吗?我知道两者都是很棒的IoC容器,但是我已经处理过具有Spring配置的大量配置文件的项目,我讨厌它.

解决方法

不,Spring.NET的当前版本(1.3)仅支持XML配置.在未来版本中已经讨论过支持Code as Configuration,但这还没有实现.

在我看来,Castle Windsor远远优于Spring.NET.我想不出Castle Windsor没有的Spring.NET的一个特性.另一方面,Castle Windsor具有Spring.NET中没有的以下功能:

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

我可能忘记了其他功能……

看起来我的触发器有点太快了,虽然我的辩护,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如何非常接近XML配置架构.因此,您没有从IObjectDefinitionRegistry接口获得任何流畅的API,但至少有一个与XML分离的API.在此基础上构建流畅的API至少在理论上是可行的.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读