Spring之高级依赖关系

Spring之高级依赖关系

概述:

  1. 调用getter方法:使用PropertyPathFactoryBean

  2. 访问类或者对象的Field值:使用FieldRetrievingFactoryBean

  3. 调用普通方法:使用MethodInvokingFactoryBean.

  • 调用getter方法

    使用PropertyPathFactoryBean获取目标的getter方法返回值。
    ==setTargetObject(Object targetObject)== 指定使用哪个对象,调用哪个Bean
    ==setPropertyPath(String propertyPath)== 指定使用Bean的哪个getter方法
    如: 返回值作为bean
    1
    2
    3
    4
    5
    6
    <bean id="son1" class="org.springframework.beans.factory.PropertyPathFactoryBean">
    //指定使用哪个bean,这里value指定使用id为person的bean
    <property name="targetBeanName" value="person"/>
    //指定使用哪个getter方法,这里value指定使用person的bean的getAge方法
    <property name="propertyPath" value="age"/>
    </bean>

如:返回值注入另一个bean

1
2
3
4
5
<bean id="son2" class="org.dbw.app.service.Son">
<property name="age">
//person.son.age代表获取person。getSon().getAge()
<bean id="person.son.age" class="org.springframework.beans.factory.config.PropertyPathFactoryBean">
</bean>

  • 访问类或对象的Field值

    使用FieldRetrievingFactoryBean访问类的静态Field或对象的实例Field值

==setTargetClass(String targetClass)== 指定调用哪个类
==setTargetObject(Object targetObject)== 指定使用哪个对象
==setTargetField(String targetField)== 指定访问哪个Field
==setStaticField(String staticField)== 同时指定取哪个类的哪个静态Field值

如:访问类的静态Field

1
2
3
4
<bean id="theAge1" class="org.springframework.beans.factory.config.FieldRetrievingFactoryBean">
<property name="targetClass" value="java.sql.Connection"/>
<property name="targetField" value="TRANSACTION SETIALIZABLE"/>
</bean>

如:访问对象的Field

1
2
3
4
<bean id="theAge2" class="org.springframework.beans.factory.config.FieldRetrievingFactoryBean">
<property name="targetObject" value="org.dbw.app.service.chinese"/>
<property name="targetField" value="XXXX"/>
</bean>

  • 调用普通方法

    使用MethodInvokingFactoryBean,调用任意类的类方法,也可以调用任意对象的实例方法

==setTargetObject(Object targetObject)== 指定调用哪个对象
==setTargetClass(String targetClass)== 指定调用哪个类
==setTargetMethod(String targetMethod)== 指定调用哪个方法
==setArguments(Object[] argument)== 指定方法的参数

-------------本文结束感谢您的阅读-------------