開発者ドキュメント

@Componentと@Repository、およびSpringの@Service


1前書き

このクイックチュートリアルでは、Spring Frameworkにおける

@ Component、@ Repository、@ Service

アノテーションの違いについて説明します。

2.春の注釈

最も典型的なアプリケーションでは、データアクセス、プレゼンテーション、サービス、ビジネスなどのような明確な層があります。

そして、各層にはさまざまな豆があります。簡単に言えば、それらを自動的に検出するために、

Springはクラスパススキャンアノテーション

を使用します。

次に、各Beanを

ApplicationContext

に登録します。

これらのアノテーションのいくつかの概要は次のとおりです。


  • @ Component

    は、Springが管理するすべてのコンポーネントの一般的なステレオタイプです。


  • @ Service

    はサービス層でクラスに注釈を付けます


  • @ Repository

    は永続化レイヤでクラスに注釈を付けます。

データベースリポジトリとして機能する

これらのアノテーションについては、https://www.baeldung.com/spring-bean-annotations[拡張記事]がすでにあります。それで、私たちはそれらの違いだけに焦点を当てます。


3何が違うの?

  • これらのステレオタイプの大きな違いは、それらが異なる分類に使用されることです。

それでは、それらについて詳しく説明しましょう。


3.1.

@成分


  • アプリケーション全体で@Componentを使用して、BeanをSpringの管理対象コンポーネントとしてマークすることができます** 。 SpringはBeanを取得して

    @ Component

    に登録するだけで、

    @ Service



    @ Repository

    は通常探しません。

それらは

@ Component

でアノテーションが付けられているので

ApplicationContext

に登録されています。

@Component
public @interface Service {
}
@Component
public @interface Repository {
}


@ Service



@ Repository

は、

@ Component

の特殊なケースです。それらは技術的には同じですが、私たちは異なる目的にそれらを使用します。


3.2.

@リポジトリ



  • @ Repository

    の仕事は、永続性固有の例外を捕捉し、それらをSpringの統一された未チェック例外の1つとして再スローすることです。

今回のSpringでは

PersistenceExceptionTranslationPostProcessor

が提供されています。これは、アプリケーションのコンテキストに追加する必要があります。

<bean class="org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor"/>

このBeanポストプロセッサは、__ @リポジトリに注釈が付けられているBeanにアドバイザを追加します


3.3.

@サービス


  • Beanに@Serviceのマークを付けて、それがビジネスロジックを保持していることを示します** 。そのため、サービス層で使用する以外に他に専門性はありません。


4結論

  • この記事では、

    __ @ Component、@ Repository、@ Service

    __注釈の違いについて学びました。それぞれの注釈をそれらの使用分野と共に別々に調べました。

結論として、アノテーションはレイヤーの慣例に基づいて選択することをお勧めします。

モバイルバージョンを終了