0

Bean ファクトリを使用して、テスト クラスから Spring Bean をロードしています

XmlBeanFactory factory = new XmlBeanFactory(new ClassPathResource("my-bean-file.xml"))
MyBean bean = (MyBean) factory.getBean("myBean")

Spring JUnit4TestRunner を使用して個々の Bean をロードできますか?それともアプリケーション コンテキスト全体をロードするためにのみ使用されますか?

4

2 に答える 2

1

アプリケーションコンテキスト全体をロードします。ただし、Bean ファイルを (DAO、サービス層、コントローラーなどに) 分割し、メイン アプリに各ファイルを 1 回含めることができます。テストでは、関心のあるレイヤーを使用してください。

于 2012-06-13T12:01:17.883 に答える
1

Bean が高すぎてすべてをロードできないためにこれを行いたい場合は、それらを遅延宣言することができます。つまり、必要な場合にのみロードされます。

春のドキュメントのサンプル:

<bean id="lazy" class="com.foo.ExpensiveToCreateBean" lazy-init="true"/>

<bean name="not.lazy" class="com.foo.AnotherBean"/>

ただし、遅延初期化された Bean が遅延初期化されていないシングルトン Bean の依存関係である場合、ApplicationContext は起動時に遅延初期化された Bean を作成します。これは、シングルトンの依存関係を満たす必要があるためです。遅延初期化された Bean は、遅延初期化されていない別の場所にあるシングルトン Bean に注入されます。

http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/beans.html#beans-factory-lazy-init

于 2012-06-13T09:06:55.100 に答える