Spring-Component@Repository、@Service、@Controllerと@Component
2800 ワード
もっと読む
回転:http://blog.csdn.net/ye1992/article/details/19971467
@Repository、@Service、@Controllerと@Componentは、類をビーンと表記します.
Springは2.0バージョンからSpringの開発を簡素化するための注釈を導入しています.Repository注釈は最初に導入されたもので、データアクセス層(DAO層)のクラスをSpring Bernとして識別するために用いられます.具体的には、この注釈をDAO類に表示すればいいです.また、Springがクラスパス中のクラスをスキャンして、@Repository注釈を識別できるようにするためには、XMLプロファイルにBenの自動スキャン機能を有効にする必要があります.以下の通りです
このように、XMLでの明示的な使用は、ビーンの構成を行う必要はありません.Springは、コンテナ初期化時に、base-packageで指定されたカバンとそのサブパッケージのすべてのクラスファイルを自動スキャンし、@Repositoryと表示されているすべての種類をSpring Beanとして登録します.
なぜ@RepositoryはDAO類にしか表記できないですか?これは、この注釈の役割は、単にクラスをビーンと識別するだけでなく、表示されたクラスから投げられたデータをSpringとして例外パッケージ化したデータにアクセスすることができるからである.Spring自体は豊富で具体的なデータアクセス技術とは無関係なデータアクセス異常構造を提供しており、異なる耐久層フレームをカプセル化するための例外的な構造であり、非常に下の層のフレームから独立している.
Spring 2.5@Repositoryに加えて、同様の機能を追加しました.@Component、@Service、@Controler、それぞれソフトウェアシステムの異なるレベルに使用されます.@Componentは汎用的な概念であり、一つのコンポーネント(Bean)だけを表しており、どのようなレベルでも機能します. @Serviceは通常業務層で機能しますが、現在は@Componentと同じ機能です. @Constrollerは通常制御層に作用しますが、現在は@Componentと同じ機能です. クラスで@Repository、@Component、@Serviceと@Controler注解を使うことによって、Springは自動的に対応するBeanDefinitionオブジェクトを作成して、Apple Conteetに登録します.これらの種類はSpringチューブのコンポーネントになります.これらの3つの注は、異なるソフトウェア層に作用するクラスを解除し、その使い方は@Repositoryと全く同じです.
また、上の4つの注釈のほかに、ユーザーがカスタマイズした注釈を作成し、注釈に@Componentを表示することができます.このカスタム注釈は@Componentと同じ機能を持っています.しかし、この機能はあまり使われていません.
ビーンが自動的に検出されると、そのスキャナーのビーンNameGenerator戦略に基づいてそのビーン名が生成される.デフォルトでは、name属性を含む@Component、@Repository、@Serviceと@Controllerに対して、nameの値をビームの名前にします.この注釈には、name値や他のカスタムフィルタで発見されたコンポーネントが含まれていない場合、デフォルトのBean名は、小文字の先頭の非限定クラス名となります.デフォルトのbean命名ポリシーを使いたくないなら、カスタムの命名ポリシーを提供できます.まずBenNameGeneratorインターフェースを実現し、デフォルトの無パラメータ構造法を含むことを確認します.次に、スキャナの配置時に全限定クラス名を提供します.
XMLで構成されたSpring Beanと同様に、前記注釈によって識別されたBeanは、そのデフォルトのスコープは「singleton」であり、これらの4つの注釈に対応するために、Benを表示しながらBenの役割領域を指定することができ、Spring 2.5は@Scope注釈を導入している.この注釈を使う時は、スコープの名前を提供すればいいです.次のようになります.
ドメイン解析戦略をカスタマイズしたいなら、注釈に基づく方法を使わずに、Scope MetadataResolaverインターフェースを実現するだけで、デフォルトのパラメータなしの構造方法を確認することができます.スキャナを配置する時に、全限定クラス名を提供します.
回転:http://blog.csdn.net/ye1992/article/details/19971467
@Repository、@Service、@Controllerと@Componentは、類をビーンと表記します.
Springは2.0バージョンからSpringの開発を簡素化するための注釈を導入しています.Repository注釈は最初に導入されたもので、データアクセス層(DAO層)のクラスをSpring Bernとして識別するために用いられます.具体的には、この注釈をDAO類に表示すればいいです.また、Springがクラスパス中のクラスをスキャンして、@Repository注釈を識別できるようにするためには、XMLプロファイルにBenの自動スキャン機能を有効にする必要があります.以下の通りです
// @Repository DAO Bean
package bookstore.dao;
@Repository
public class UserDaoImpl implements UserDao{ …… }
// , XML Spring
……
……
このように、XMLでの明示的な使用は、ビーンの構成を行う必要はありません.Springは、コンテナ初期化時に、base-packageで指定されたカバンとそのサブパッケージのすべてのクラスファイルを自動スキャンし、@Repositoryと表示されているすべての種類をSpring Beanとして登録します.
なぜ@RepositoryはDAO類にしか表記できないですか?これは、この注釈の役割は、単にクラスをビーンと識別するだけでなく、表示されたクラスから投げられたデータをSpringとして例外パッケージ化したデータにアクセスすることができるからである.Spring自体は豊富で具体的なデータアクセス技術とは無関係なデータアクセス異常構造を提供しており、異なる耐久層フレームをカプセル化するための例外的な構造であり、非常に下の層のフレームから独立している.
Spring 2.5@Repositoryに加えて、同様の機能を追加しました.@Component、@Service、@Controler、それぞれソフトウェアシステムの異なるレベルに使用されます.
また、上の4つの注釈のほかに、ユーザーがカスタマイズした注釈を作成し、注釈に@Componentを表示することができます.このカスタム注釈は@Componentと同じ機能を持っています.しかし、この機能はあまり使われていません.
ビーンが自動的に検出されると、そのスキャナーのビーンNameGenerator戦略に基づいてそのビーン名が生成される.デフォルトでは、name属性を含む@Component、@Repository、@Serviceと@Controllerに対して、nameの値をビームの名前にします.この注釈には、name値や他のカスタムフィルタで発見されたコンポーネントが含まれていない場合、デフォルトのBean名は、小文字の先頭の非限定クラス名となります.デフォルトのbean命名ポリシーを使いたくないなら、カスタムの命名ポリシーを提供できます.まずBenNameGeneratorインターフェースを実現し、デフォルトの無パラメータ構造法を含むことを確認します.次に、スキャナの配置時に全限定クラス名を提供します.
XMLで構成されたSpring Beanと同様に、前記注釈によって識別されたBeanは、そのデフォルトのスコープは「singleton」であり、これらの4つの注釈に対応するために、Benを表示しながらBenの役割領域を指定することができ、Spring 2.5は@Scope注釈を導入している.この注釈を使う時は、スコープの名前を提供すればいいです.次のようになります.
@Scope("prototype")
@Repository
public class Demo { … }
ドメイン解析戦略をカスタマイズしたいなら、注釈に基づく方法を使わずに、Scope MetadataResolaverインターフェースを実現するだけで、デフォルトのパラメータなしの構造方法を確認することができます.スキャナを配置する時に、全限定クラス名を提供します.