您的位置:首页 > 编程语言 > Java开发

SPRING.NET 1.3.2 学习21--使用对象或类的属性值进行注入

2013-04-01 15:40 489 查看
PropertyRetrievingFactoryObject是IFactoryObject接口的实现类,用于将其它对象或类型的属性值注入给对象的属性或构造器参数。该类可以从对象或类型中(指静态属性)获取任何公有属性的值。
如果要用PropertyRetrievingFactoryObject获取实例属性的值,需要为其指定目标对象及属性名,目标对象可以是任意其它对象,甚至可以是内联对象。如果要获取静态属性,则需要指定目标类型的全名和属性名。
然后,通过PropertyRetrievingFactoryObject对象的id即可获取目标对象或类型的属性值,获取的结果可直接注入给对象的属性或构造器参数。注意,实例属性和静态属性都支持嵌套。
下面使用PropertyRetrievingFactoryObject获取目标对象的属性值。在此目标对象的属性值是个内联的对象定义,所以在PropertyRetrievingFactoryObject对象定义的TargetProperty属性中,使用了嵌套式的属性路径。
<object name="person" type="Spring.Objects.TestObject, Spring.Core.Tests">
  <property name="age" value="20"/>
  <property name="spouse">
    <object type="Spring.Objects.TestObject, Spring.Core.Tests">                      
      <property name="age" value="21"/>
    </object>

  </property>          
</object>
        
// will result in 21, which is the value of property 'spouse.age' of object 'person'        
<object name="theAge" type="Spring.Objects.Factory.Config.PropertyRetrievingFactoryObject, Spring.Core">
  <property name="TargetObject" ref="person"/>
  <property name="TargetProperty" value="spouse.age"/>
</object>
下面是使用PropertyRetrievingFactoryObject获取静态属性的方法:
<object id="cultureAware" 
        type="Spring.Objects.Factory.Xml.XmlObjectFactoryTests+MyTestObject, Spring.Core.Tests">
  <property name="culture" ref="cultureFactory"/>
</object>

<object id="cultureFactory" 
        type="Spring.Objects.Factory.Config.PropertyRetrievingFactoryObject, Spring.Core">
  <property name="StaticProperty">
      <value>System.Globalization.CultureInfo.CurrentUICulture, Mscorlib</value>

  </property>
</object>
类似的,获取实例属性的方法如下:
<object id="instancePropertyCultureAware" 
        type="Spring.Objects.Factory.Xml.XmlObjectFactoryTests+MyTestObject, Spring.Core.Tests">
  <property name="Culture" ref="instancePropertyCultureFactory"/>
</object>

<object id="instancePropertyCultureFactory" 
        type="Spring.Objects.Factory.Config.PropertyRetrievingFactoryObject, Spring.Core">
  <property name="TargetObject" ref="instancePropertyCultureAwareSource"/>
  <property name="TargetProperty" value="MyDefaultCulture"/>

</object>

<object id="instancePropertyCultureAwareSource" 
        type="Spring.Objects.Factory.Xml.XmlObjectFactoryTests+MyTestObject, Spring.Core.Tests"/>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: