1

これは私の春の設定ファイルです:

   <bean id="controller" class="com.sample.controller.Controller">
       <property name="message" value="Controller1"/>
   </bean>
   <bean id="controller2" class="com.sample.controller.Controller2">
       <property name="message" value="#{controller.message}"/>
   </bean>

そしてコード:

 ApplicationContext context = 
         new ClassPathXmlApplicationContext("beans.xml");

  Controller obj = (Controller) context.getBean("controller");

  System.out.println(obj.getMessage());
  obj.message = "Controller1 changed!";

  Controller2 obj2 = (Controller2) context.getBean("controller2");
  System.out.println(obj2.getMessage());

出力を次のようにしたかった:

Controller1
Controller1 changed!

しかし、それは

Controller1
Controller1

Controller1にControllerを注入する以外に、更新された値を取得する簡単な方法はありますか?

ありがとうございました。

4

1 に答える 1

0

プロパティ messageを bean itself として定義する

<bean id="message" class="java.lang.String">
    <constructor-arg value="Controller1"/>
</bean>

元の Bean 構成を変更します

   <bean id="controller" class="com.sample.controller.Controller">
       <property name="message" ref="message"/>
   </bean>
   <bean id="controller2" class="com.sample.controller.Controller2">
       <property name="message" ref="message"/>
   </bean>

Javaコードのメッセージを次のように変更します

  String obj = (String) context.getBean("message");

それをコンテキストに追加します

于 2013-08-01T21:47:44.400 に答える