스프링 XML 구성 파일에서 읽기 위해 콩의 속성을 어떻게 사용합니까?

StackOverflow https://stackoverflow.com/questions/142740

  •  02-07-2019
  •  | 
  •  

문제

봄에 다음과 같은 일을하고 싶습니다.

<beans>
    ...
    <bean id="bean1" ... />
    <bean id="bean2">
        <property name="propName" value="bean1.foo" />
...

이것이 Bean1의 getfoo () 메소드에 액세스하고 Bean2의 setpropname () 메소드를 호출 할 것이라고 생각하지만 이것은 작동하지 않는 것 같습니다.

도움이 되었습니까?

해결책

내가 이해 한 것 :

  1. "foo"라는 속성이있는 Bean (Bean1)이 있습니다.
  2. "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. 
  }
}

공통-비유질 도움이되어야합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top