|
|||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||||
java.lang.Objectorg.springframework.beans.factory.config.PropertyPathFactoryBean
FactoryBean that evaluates a property path on a given target object. The target object can be specified directly or via a bean name.
Usage examples:
// target bean to be referenced by name
<bean id="tb" class="org.springframework.beans.TestBean" singleton="false">
<property name="age"><value>10</value></property>
<property name="spouse">
<bean class="org.springframework.beans.TestBean">
<property name="age"><value>11</value></property>
</bean>
</property>
</bean>
// will result in 12, which is the value of property 'age' of the inner bean
<bean id="propertyPath1" class="org.springframework.beans.factory.config.PropertyPathFactoryBean">
<property name="targetObject">
<bean class="org.springframework.beans.TestBean">
<property name="age"><value>12</value></property>
</bean>
</property>
<property name="propertyPath"><value>age</value></property>
</bean>
// will result in 11, which is the value of property 'spouse.age' of bean 'tb'
<bean id="propertyPath2" class="org.springframework.beans.factory.config.PropertyPathFactoryBean">
<property name="targetBeanName"><value>tb</value></property>
<property name="propertyPath"><value>spouse.age</value></property>
</bean>
// will result in 10, which is the value of property 'age' of bean 'tb'
<bean id="tb.age" class="org.springframework.beans.factory.config.PropertyPathFactoryBean"/>
Thanks to Matthias Ernst for the suggestion and initial prototype!
setTargetObject(java.lang.Object),
setTargetBeanName(java.lang.String),
setPropertyPath(java.lang.String)| Constructor Summary | |
PropertyPathFactoryBean()
|
|
| Method Summary | |
Object |
getObject()
Return an instance (possibly shared or independent) of the object managed by this factory. |
Class |
getObjectType()
Return the type of object that this FactoryBean creates, or null if not known in advance. |
boolean |
isSingleton()
While this FactoryBean will often be used for singleton targets, the invoked getters for the property path might return a new object for each call, so we have to assume that we're not returning the same object for each getObject() call. |
void |
setBeanFactory(BeanFactory beanFactory)
Callback that supplies the owning factory to a bean instance. |
void |
setBeanName(String beanName)
The bean name of this PropertyPathFactoryBean will be interpreted as "beanName.property" pattern, if neither "targetObject" nor "targetBeanName" nor "propertyPath" have been specified. |
void |
setPropertyPath(String propertyPath)
Specify the property path to apply to the target. |
void |
setResultType(Class resultType)
Specify the type of the result from evaluating the property path. |
void |
setTargetBeanName(String targetBeanName)
Specify the name of a target bean to apply the property path to. |
void |
setTargetObject(Object targetObject)
Specify a target object to apply the property path to. |
| Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Constructor Detail |
public PropertyPathFactoryBean()
| Method Detail |
public void setTargetObject(Object targetObject)
targetObject - a target object, for example a bean reference
or an inner beansetTargetBeanName(java.lang.String)public void setTargetBeanName(String targetBeanName)
targetBeanName - the bean name to be looked up in the
containing bean factory (e.g. "testBean")setTargetObject(java.lang.Object)public void setPropertyPath(String propertyPath)
propertyPath - the property path, potentially nested
(e.g. "age" or "spouse.age")public void setResultType(Class resultType)
Note: This is not necessary for directly specified target objects or singleton target beans, where the type can be determined through introspection. Just specify this in case of a prototype target, provided that you need matching by type (for example, for autowiring).
resultType - the result type, for example "java.lang.Integer"public void setBeanName(String beanName)
setBeanName in interface BeanNameAwarebeanName - the name of the bean in the factorypublic void setBeanFactory(BeanFactory beanFactory)
BeanFactoryAwareInvoked after population of normal bean properties but before an init callback like InitializingBean's afterPropertiesSet or a custom init-method.
setBeanFactory in interface BeanFactoryAwarebeanFactory - owning BeanFactory (may not be null).
The bean can immediately call methods on the factory.BeanInitializationException
public Object getObject()
throws BeansException
FactoryBean
getObject in interface FactoryBeanBeansExceptionpublic Class getObjectType()
FactoryBeanFor a singleton, this should try to avoid singleton creation as far as possible; it should rather estimate the type in advance. For prototypes, returning a meaningful type here is advisable too.
This method can be called before this FactoryBean has been fully initialized. It must not rely on state created during initialization; of course, it can still use such state if available.
NOTE: Autowiring will simply ignore FactoryBeans that return null here. Therefore it is highly recommended to implement this method properly, using the current state of the FactoryBean.
getObjectType in interface FactoryBeanListableBeanFactory.getBeansOfType(java.lang.Class)public boolean isSingleton()
isSingleton in interface FactoryBean
|
|||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||||