2011-08-09 13 views
0

Spring IoCアプリケーションコンテキストで子オブジェクトを取得して値を設定したいとします。これどうやってするの?ここで子Beanの設定値

は、コードと同等です:

// The constructor here instantiates the correct child object 
MyContainerBean container = new MyContainerBean(); 
container.getChild().setValue(someValue); 
+0

'someValue'をアプリケーションコンテキストから挿入できるかどうか尋ねていますか? – Jeremy

+0

どのような文脈でですか?春?他に何か?あなたは、あなたの質問を理解するために誰かが使用できる情報はほとんど提供していません。 –

+0

@Jim - はい、Springアプリケーションのコンテキストです。 –

答えて

2

あなたは

<bean id="container" class="MyContainerBean"> 
    <property name="child"> 
     <bean class="Child"> 
      <property name="value" value="someValue"/> 
     </bean> 
    </property> 
</bean> 

を意味していますか?

編集:あなたの回答に基づいて、問題はあなたがInversion of Controlに違反していることです。オブジェクトは独自の依存関係を作成しません。彼らはそれらが注射されることを可能にする。この場合のXML設定でできることは、おそらくコンテナを作成してそれをあるオブジェクトに注入し、そのオブジェクトに必要な変更を加えることです。 Java-based configurationを使用して、必要に応じてコンテナBeanを作成して構成することもできます。

+0

これは私が探しているものと幾分似ています。違いは、BeanでChildをインスタンス化できないことです。 MyContainerのデフォルトコンストラクタはChildをインスタンス化します。次に、MyContainerがインスタンス化して値を設定するChildオブジェクトを取得したいと考えています。 –

+0

あなたは子供をインスタンス化するためにSpringを使用できないのはなぜですか? – Jeremy

+0

親自体が子を構成し、独自のデフォルト値を子のコンストラクタに提供します。私はプロセスのその部分に干渉したくありません。 –

0

親が子をインスタンス化し、それを変更できない場合は、その親に値を注入して、親が適切な瞬間にそれを子に注入させるようにします。注入する値が親作成時に分からない場合は、デザインを変更する必要があります。

関連する問題