8

私はSpring MVCを勉強しています。今日、JDBC DAO の実装方法を理解しようとして、Spring (Spring MVC ではなく Spring) でこの「Hello World」を見つけました。データへのアクセスを実行するプロジェクト...)

http://www.tutorialspoint.com/spring/spring_hello_world_example.htm

OK、これはスタンドアロン アプリケーションであり、これは Web アプリケーションではないため、Web アプリケーション構造 (WEB-INF フォルダー、web.xml ファイル、および Web アプリにあるディスパッチャー サーブレット構成ファイル) がありません。

この例では、Spring ソース ファイルに影響を与えることなく、異なる Bean に一意の ID を割り当て、異なる値を持つオブジェクトの作成を制御するために使用されるBeans.xml構成ファイルがあります...

たとえば、この例では、Beans.xmlファイルを使用して「message」変数に「Hello World」メッセージ値を渡すため、HelloWorld.javaおよびMainApp.javaファイルに影響を与えずにこの値を出力できます。

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

<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">

   <bean id="helloWorld" class="com.tutorialspoint.HelloWorld">
       <property name="message" value="Hello World!"/>
   </bean>

</beans>

それで、それについてあなたにいくつか質問があります:

  1. このファイルは私のBean Factoryを構成するファイルですか? 変数の値としてテキスト値を渡すだけでなく、Bean を別の Bean の依存関係として注入することもできると思います。

    そうですか?

  2. この例では、Beans.xmlファイルを使用せずに、アノテーション システムの代わりに使用することはできますか?

4

2 に答える 2

19

1)このBeans.xml (実際には任意の名前を付けることができます) は、Spring 構成ファイルです構成メタデータを保持します。

公式のSpringドキュメントから:

5.2.1 構成メタデータ

前の図が示すように、Spring IoC コンテナーは構成メタデータの形式を使用します。この構成メタデータは、アプリケーション開発者として Spring コンテナーにアプリケーション内のオブジェクトのインスタンス化、構成、およびアセンブルを指示する方法を表します。

構成メタデータは、伝統的に単純で直感的な XML 形式で提供されますが、構成メタデータとして許可されている唯一の形式ではありません(2 番目の質問への回答を参照してください)。

はい、その通りです。別の Bean を参照として注入できます。

公式のSpringドキュメントから:

5.3 ビーンの概要

Spring IoC コンテナーは、1 つ以上の Bean を管理します。これらの Bean は、XML 定義の形式などでコンテナーに提供する構成メタデータを使用して作成されます。

コンテナー自体の中で、これらの Bean 定義は BeanDefinition オブジェクトとして表され、(他の情報とともに) 次のメタデータが含まれます。

  • パッケージ修飾クラス名: 通常、定義されている Bean の実際の実装クラス。

  • Bean の動作構成要素。Bean がコンテナー内でどのように動作するかを示します (スコープ、ライフサイクル コールバックなど)。

  • Beanが機能するために必要な他の Bean への参照。これらの参照は、コラボレーターまたは 依存関係とも呼ばれます。

  • 接続プールを管理する Bean で使用する接続数やプールのサイズ制限など、新しく作成されたオブジェクトに設定するその他の構成設定。


公式ドキュメントから他の Bean への参照を使用する簡単な例:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
           http://www.springframework.org/schema/beans/spring-beans.xsd">

    <bean id="exampleBean" class="examples.ExampleBean">
        <!-- setter injection using the nested <ref/> element -->
        <property name="beanOne">
            <ref bean="anotherExampleBean"/>
        </property>

        <!-- setter injection using the neater 'ref' attribute -->
        <property name="beanTwo" ref="yetAnotherBean"/>
        <property name="integerProperty" value="1"/>
    </bean>

    <bean id="anotherExampleBean" class="examples.AnotherBean"/>
    <bean id="yetAnotherBean" class="examples.YetAnotherBean"/>

</beans>

2) Spring の公式ドキュメントから:

5.2.1 構成メタデータ

...

XML ベースのメタデータは、許可されている構成メタデータの唯一の形式ではありません。Spring IoC コンテナー自体は、この構成メタデータが実際に書き込まれる形式から完全に分離されています。

Spring コンテナーで他の形式のメタデータを使用する方法については、以下を参照してください。

  • 注釈ベースの構成: Spring 2.5 では、注釈ベースの構成メタデータのサポートが導入されました。

  • Java ベースの構成: Spring 3.0 以降、Spring JavaConfig プロジェクトによって提供される多くの機能がコア Spring Framework の一部になりました。したがって、XML ファイルではなく Java を使用して、アプリケーション クラスの外部で Bean を定義できます。これらの新機能を使用するには、 @Configuration@Bean@Importおよび@DependsOn注釈を参照してください。

こちらもお読みください:
Spring Without XML: The Basics of Spring Annotations vs. Spring XML Files

于 2013-01-20T01:08:53.213 に答える