0

Spring 構成ファイルは Bean を作成し、それらを相互接続します。これは正しいです?アプリケーションに Bean のチェーンがありますが、より小さなチェーンでテストしたいと考えています。Spring で複数のチェーンを定義できますか? または、1 つの Bean 構造のみが許可されますか?

これが本番構成であるとします。

<bean id="provider"
    class="tests.Provider">
</bean>

<bean id="processor1" class="tests.Processor1">
    <property name="input" ref="provider"/>
</bean>

<bean id="processor2" class="tests.Processor2">
    <property name="input" ref="processor1"/>
</bean>

<bean id="consumer" class="tests.Consumer">
    <property name="input" ref="processor2"/>
</bean>

そして、次の構成でテストしたい:

<bean id="provider"
    class="tests.Provider">
</bean>

<bean id="analyzer" class="tests.Analyzer">
    <property name="input" ref="provider"/>
</bean>

と:

<bean id="provider"
    class="tests.Provider">
</bean>

<bean id="processor1" class="tests.Processor1">
    <property name="input" ref="provider"/>
</bean>

<bean id="analyzer" class="tests.Analyzer">
    <property name="input" ref="processor1"/>
</bean>

など、豆を一つ一つ付けていきます。

4

3 に答える 3

1

はい、できます。

アプリケーションの Spring アプリケーション コンテキストの全体的な構成を部分 (XML 構成を使用する場合は XML ファイル、@Componentsクラスパス スキャンを使用する場合はパッケージ、 @ConfigurationJava ベースの構成を使用する場合は s) に分割し、これらのサブセットを使用してアプリケーション コンテキストを構築できます。部品。

したがって、アプリケーションに と の 2 つの機能がある場合、これらの機能で使用される Beanをそれぞれfooとで宣言し(XML 構成を使用する場合)、アプリケーションのメイン構成 ( など) からそれらをインポートできます。barfoo.xmlbar.xmlapplicationContext.xml

ここで、統合テストを作成する場合は、( ) のみbarからアプリケーション コンテキストを作成できます。明らかに、構成のさまざまな部分間の相互依存性に注意する必要があります。たとえば、 と の両方が で宣言された Beanに依存している場合、 のようなものを作成して、 の統合テストをとして構成することができます。bar.xml@ContextConfiguration("bar.xml")foo.xmlbar.xmldb.xmltest-db.xmlbar@ContextConfiguration({"bar.xml", "test-db.xml"})

このアプローチには、特にクラスパス スキャンを使用する場合に、ある程度の規律が必要であることに注意してください。この場合、構成の一部がパッケージによって定義されるため、「レイヤーではなく機能ごとにパッケージ化する」という規則に従う必要があります。

以下も参照してください。

于 2012-09-13T14:52:57.450 に答える
1

統合をテストしたいのだと思いますが、私が通常行うことは、Bean 構成ファイルを層に分けてから、テストのために必要に応じてインポートすることです。このようなもの:

<?xml version="1.0" encoding="UTF-8"?>
<beans ...>

    <context:property-placeholder
        location="classpath:mx/gob/jgtjo/apps/schedule/web/schedule-web.properties"
        file-encoding="UTF-8" system-properties-mode="NEVER" />

    <!-- Context files -->
    <import resource="spring/dataContext.xml" />
    <import resource="spring/serviceContext.xml" />
    <import resource="spring/securityContext.xml" />
    <import resource="spring/components.xml" />

</beans>

次に、Daos をテストする必要がある場合は、testContextDao 内に dataContext.xml をインポートするだけです。

于 2012-09-13T14:51:31.847 に答える
0

簡単に言えば、SpringFrameworkがオブジェクトの作成を処理します。Springで管理するこれらのオブジェクトは、Beanとして定義します。したがって、春がbean1を作成するときにそのbean1がbean2を参照している場合、bean2がインスタンス化されてbean1に注入され、最後にbean1が作成されます。それをチェーンと考えると、複雑になりすぎます。

春のドキュメントのセクション3.2

于 2012-09-13T14:34:33.483 に答える