2011-01-25 9 views
2

私が書いているLDAPアプリケーション用のbeans.xmlファイルがあります。私は、ユーザーにいくつかのLdapContextSource(s)の選択を許可しています。それぞれについて、私は別の豆を持っています。一つだけがldapTemplate Beanによって参照されるのでSpring - すべてのBeanは処理されますか?

<bean id="ldapTemplate" class="yyy.LdapTemplate"> 
     <constructor-arg ref="contextSource1" /> 
</bean> 
<bean id="contextSource1" class="xxx.LdapContextSource"> 
     ... 
</bean> 
<bean id="contextSource2" class="xxx.LdapContextSource"> 
     ... 
</bean> 
<bean id="contextSource3" class="xxx.LdapContextSource"> 
     ... 
</bean> 

あなたは、これらのコンテキストソース豆の一つだけがインスタンス化されることを見ることができます。しかし、私がアプリケーションを走らせると、stdout内のSpringログメッセージは、ただ1つだけが依存していても、各コンテキストソースに関する情報を提供します。

2011年1月25日午前11時56分36秒AM org.springframework.ldap.core.support.AbstractContextSource afterPropertiesSet INFO:プロパティ 'userDnは' を設定していない - 匿名のコンテキストは、読み取り書き込み操作 月のために使用されますプロパティー 'userDn'が設定されていません - 読み書き操作に匿名コンテキストが使用されます 2011年1月25日11:56: 37 AM org.springframework.ldap.core.support.AbstractContextSource afterPropertiesSet INFO:プロパティ 'userDn'が設定されていない - 読み書き操作に匿名コンテキストが使用される

私の質問は次のとおりです。

(1)Springは、参照/依存していないコンテキストソースと何をしていますか?私のアプリケーションではそれらをインスタンス化するべきではありません。そして、SpringがこれらのBeanのそれぞれについてログ情報を提供していることを心配しています。

(2)アプリケーションで使用されていないコンテキストソースBeanをコメントアウトする必要がありますか?それらのコメントを外したままの結果はどうなりますか?標準的なプラクティスは何ですか?

おかげで、
KTM

答えて

9

たぶん、あなたはLazy Loading of Beansをチェックアウトすることができます。ここでは春の2.5.xのドキュメントから関連する説明が...

ある ApplicationContextの実装のためのデフォルトの動作は、熱心に、起動時にすべての シングルトン豆を事前にインスタンス化する です。 事前インスタンス化とは、 ApplicationContextが を熱心に作成し、そのすべてのシングルトン beanをその初期化の一部として構成することを意味します。 プロセス。これは、構成内または周囲の のいずれかのエラーが、 ( 行の可能性もあるが、 とは対照的に)で直ちに検出されることを意味するため、通常は良い のものです。

ただし、この の動作が望ましくない場合があります。 あなたはシングルトンBeanが事前にインスタンス化さ のApplicationContextを使用しているとき、あなたは 選択怠惰な初期化として Bean定義をマークすることによって、これを制御することができますしたくない場合は 。 遅延初期化Beanは、 起動時または最初に要求されたときに、 Beanインスタンスを作成する必要があるかどうかを、IoCコンテナの に示します。ここcompletnessの便宜上

は一例です...

<bean id="contextSource1" class="xxx.LdapContextSource" lazy-init="true"/> 
+0

ありがとう! xxxxxxx – ktm5124

関連する問題