Spring之高级依赖关系
概述:
调用getter方法:使用PropertyPathFactoryBean
访问类或者对象的Field值:使用FieldRetrievingFactoryBean
调用普通方法:使用MethodInvokingFactoryBean.
调用getter方法
使用PropertyPathFactoryBean获取目标的getter方法返回值。
==setTargetObject(Object targetObject)== 指定使用哪个对象,调用哪个Bean
==setPropertyPath(String propertyPath)== 指定使用Bean的哪个getter方法
如: 返回值作为bean1
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>
如:返回值注入另一个bean1
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>
==setTargetClass(String targetClass)== 指定调用哪个类
==setTargetObject(Object targetObject)== 指定使用哪个对象
==setTargetField(String targetField)== 指定访问哪个Field
==setStaticField(String staticField)== 同时指定取哪个类的哪个静态Field值
如:访问类的静态Field1
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>
如:访问对象的Field1
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>
==setTargetObject(Object targetObject)== 指定调用哪个对象
==setTargetClass(String targetClass)== 指定调用哪个类
==setTargetMethod(String targetMethod)== 指定调用哪个方法
==setArguments(Object[] argument)== 指定方法的参数