如何注入依赖于层次结构Spring.Net
我如何定义配置注入依赖对象的层次结构如下:如何注入依赖于层次结构Spring.Net
RootObject
- ContentObject
- L11Object
- L12Object
- L21Object
.etc.
的RootObject
具有依赖性ImportantObject
和ContentObject
具有依赖性AnotherObject
。 定义论文依赖我定义如下:
<object name="RootObject" type="...." abstract="true">
<constructor-args ../>
</object>
<object name="ContentObject" type="...." abstract="true" parent="RootObject">
<constructor-args ../>
</object>
所有工作正常,但Spring.Net需要在配置文件中定义我的对象的层次结构。 是否有可能使用像“自动发现”这样的思考,通过定义parent="..."
不要在配置中重复继承层次结构?
是的,我知道Unity 1.0+比Spring.Net更好地解决它,但我没有选择,我应该使用Spring.Net。
这听起来像你想自动布线 ......像这样的东西应该工作:
<objects xmlns="http://www.springframework.net"
default-autowire="constructor">
<object type="RootObject" />
<object type="ContentObject" />
<object type="L11Object" />
<object type="L12Object" />
<object type="L21Object" />
<!--etc.-->
</objects>
这是假设问题的类型利用构造器注入格局,但IIRC 物业注入也受支持。
尽管default-autowire
定义了自动接线的默认行为,但仍可以在可能需要的那些元件中覆盖它。
这是正确的,但您可能需要指定完整类型名称(包括名称空间和程序集)。 – Marijn
根据[文档](http://www.springframework.net/doc-latest/reference/html/objects.html#objects-factory-autowire),您应该也可以使用'byName','byType '和'autodetect'作为自动装配模式,但是如上所述使用'default-autowire'时,只有'constructor'对我有用。 – Marijn
因此,财产注入显然是可用的,并可能工作,但我不能在15分钟内设置它......但这只是我。 – Marijn
“自动发现”在spring.net中被称为自动装配:请参见[spring.net自动装配文档](http://www.springframework.net/doc-latest/reference/html/objects.html#objects-工厂自动装配)。 – Marijn
您正在使用的“parent”和“abstract”属性不用于连接依赖关系,而是用于重用对象定义。这个概念被称为[对象定义继承](http://www.springframework.net/doc-latest/reference/html/objects.html#objects-childobjects)。 – Marijn