@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 __注釈の違いについて学びました。それぞれの注釈をそれらの使用分野と共に別々に調べました。

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

前の投稿:レタスの紹介 - Java Redisクライアント
次の投稿:JUnit 4からJUnit 5への移行