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
__注釈の違いについて学びました。それぞれの注釈をそれらの使用分野と共に別々に調べました。
結論として、アノテーションはレイヤーの慣例に基づいて選択することをお勧めします。