spring学习之---高级依赖关系配置

来源:互联网 发布:淘宝 智能代理技术 编辑:程序博客网 时间:2024/04/29 05:13

spring框架的功能是:它可以让开发者无须书写Java代码就可进行Java编程,当开发者XML采用合适语法进行配置之后,spring就可通过反射在底层执行任意的Java代码。

1.获取其他Bean的属性值

PropertyPathFactoryBean用来获取目标Bean的属性值(实际上就是它的getter方法的返回值)。

  • 调用哪个对象:setTargetObject(Object targetObject)方法指定。
  • 调用哪个getter方法:setPropertyPath(Strung propertyPath)方法指定。
    <bean id="person" class="">        <property name="age" value="30"/>        <property name="son">            <bean class="">                <property name="age" value="11"/>            </bean>        </property>    </bean>    <bean id="son1" class="org.springframework.beans.factory.config.PropertyPathFactoryBean">    <!--指定了获取person的getSon()方法的返回值,该返回值直接定义成容器中的son1-->        <property name="targetBeanName" value="person"/>        <property name="propertyPath" value="son"/>    </bean>

目标Bean既可以是容器中已有的Bean实例,也可以是嵌套Bean实例。

<util:property-path.../>元素可作为PropertyPathFactoryBean的简化:

  • id:该属性指定将getter方法的返回值定义成名为id的Bean实例。
  • path:该属性指定将哪个Bean实例、哪个属性(支持复合属性)暴露出来。

2.获取Field值

通过FieldRetrievingFactoryBean类,可访问类的静态Field或对象的实例Field值。
1. 调用哪个类。由setTargetClass(String targetClass)方法指定。
2. 访问哪个Field。由setTargetField(String targetField)方法指定。

该类还提供了一个setStaticField(String staticField)方法,该方法可同时指定获取哪个类的哪个静态Field值。

使用方式和上述基本一样。

<util:constant.../>元素简化配置:

  • id:该属性指定将静态Field的值定义成名为id的Bean实例。
  • static-field:该属性指定访问哪个类的哪个静态Field。

3.获取方法的返回值

通过MethodInvokingFactoryBean工厂Bean,可调用任意类的类方法,也可调用任意对象的实例方法,如果调用的方法有返回值,则既可将该指定方法的返回值定义成容器中的Bean,也可将指定方法的返回值注入其他Bean。
1. 调用哪个类:setTargetClass(String targetClass)方法指定。
2. 调用哪个方法:setTargetMehod(String targetMethod)方法指定。
3. 调用方法参数:setArguments(Object[] arguments)方法指定。

Spring框架的本质其实就是通过XML配置来执行Java代码,因此几乎可以把所有的Java代码放到spring配置文件中管理。

  • 调用构造器创建对象,用<bean.../>元素。
  • 调用setter方法,用<property.../>元素。
  • 调用getter方法,用PropertyPathFactoryBean。
  • 调用普通方法,用MethodInvokingFactoryBean。
  • 获取Field的值,用FieldRetrievingFactoryBean。
原创粉丝点击