스프링 XML 구성 파일에서 읽기 위해 콩의 속성을 어떻게 사용합니까?
-
02-07-2019 - |
문제
봄에 다음과 같은 일을하고 싶습니다.
<beans>
...
<bean id="bean1" ... />
<bean id="bean2">
<property name="propName" value="bean1.foo" />
...
이것이 Bean1의 getfoo () 메소드에 액세스하고 Bean2의 setpropname () 메소드를 호출 할 것이라고 생각하지만 이것은 작동하지 않는 것 같습니다.
해결책
내가 이해 한 것 :
- "foo"라는 속성이있는 Bean (Bean1)이 있습니다.
- "propname"이라는 속성이있는 다른 Bean (Bean2)이 있고, wich는 Bean1과 동일한 "foo"를 가져야합니다.
이 작업을 수행하지 않는 이유 :
<beans>
...
<bean id="foo" class="foopackage.foo"/>
<bean id="bean1" class="foopackage.bean1">
<property name="foo" ref="foo"/>
</bean>
<bean id="bean2" class="foopackage.bean2">
<property name="propName" ref="foo"/>
</bean>
....
</beans>
이렇게하면 Bean2는 예에서와 같이 Bean1과 결합되지 않습니다. 서로 영향을 미치지 않고 Bean1과 Bean2를 변경할 수 있습니다.
만약 너라면 진짜 제안한 주입을해야합니다. 다음을 사용할 수 있습니다.
<util:property-path id="propName" path="bean1.foo"/>
다른 팁
사용해야합니다 PropertyPathFactoryBean:
<bean id="bean2" depends-on="bean1"> <property name="propName"> <bean class="org.springframework.beans.factory.config.PropertyPathFactoryBean"> <property name="targetBeanName" value="bean1"/> <property name="propertyPath" value="foo"/> </bean> </property> </bean>
Bean1을 주입해야한다고 생각하고 foo
타이밍 문제로 인해 수동으로. 프레임 워크는 언제 대상 Bean의 값을 해결합니까?
포인터 빈을 만들어 구성 할 수 있습니다.
class SpringRef {
private String targetProperty;
private Object targetBean;
//getters/setters
public Object getValue() {
//resolve the value of the targetProperty on targetBean.
}
}
공통-비유질 도움이되어야합니다.
제휴하지 않습니다 StackOverflow