2017-12-06 2 views
0

私は@Serviceがクラスをビジネスロジッククラスとしてマークすることを理解します。なぜそれは春に便利ですか?私は既に@Componentを使用してクラスをBeanとしてマークすることができます。私は@Service@Componentより具体的だと理解していますが、どうですか?スプリングサービス注釈とは何ですか?

+0

私は '@ Component'を使うことができますが、' @Service'はより良いインテントを指定していると思います。両方の作品。 –

+0

@Serviceが別の方法で処理されているとわかりません – webpersistence

+0

参照:[Springのコンポーネント、リポジトリとサービスアノテーションの違いは何ですか?](https://stackoverflow.com/questions/6827752/whats-the-difference-between- component-repository-service-annotations-in) – Jesper

答えて

1

@Service、@Controller、@Repository = {@Component +いくつかのより多くの特殊な機能}

詳細

What's the difference between @Component, @Repository & @Service annotations in Spring?

@Component注釈がマークについては、以下のリンクをクリックJavaクラスをBeanとして、 春のコンポーネント走査機構が拾い上げて、アプリケーションのコンテキストを にプルすることができます。 @Service注釈は、コンポーネント注釈の特殊化でもある です。現在のところ、 は@Componentアノテーションに対して追加の動作を提供していませんが、 サービス層 クラスで@Serviceを超える@Serviceを使用することをお勧めします。さらに、ツールのサポート と将来の追加の動作に依存する可能性があります。

1

@Serviceアノテーションは、コンポーネントアノテーションの特殊化です。現在のところ、@Componentアノテーションに対する追加の動作は提供されていませんが、サービスレイヤークラスで@Serviceに@Serviceを使用することをお勧めします。さらに、ツールのサポートと追加の動作は将来的にそれに依存する可能性があります。

1

注釈をスイスナイフとしてください。それは同様に、コンポーネントは、ビジネスロジッククラスとして、またはコントローラなど、リポジトリとして働くことができる

Component

等、鋏のように、オープナーとして、ナイフを切断するように作用することができます。

@Serviceは、@Componentのナイフのバージョンのうちの1つです。

スプリングプロセス@Service@Componentに似ています。@Serviceインターフェイス自体に@Componentという注釈が付けられています。春のドキュメントから

@Target(value=TYPE) 
@Retention(value=RUNTIME) 
@Documented 
@Component 
public @interface Service 

は注釈付きクラスは、「サービス」(例えば、ビジネス サービス・ファサード)であることを示します。

なぜ両者を区別するのですか?

プログラミングの基本的なルールを適用するには:コードを簡単に読み取る必要があります。

はい、あなたはどこにでも@Componentアノテーションを使用することができますし、それが正常に動作しますが、コードをよりよく理解するために、私たちの場合は@Serviceのような注釈のそれぞれの特殊なタイプを使用することが好ましいです。

その他の利点は、デバッグが容易であることです。エラーを知ったら、コンポーネントクラスからサービスクラス、リポジトリクラス、コントローラクラスのどれかを確認する必要はありません。

+0

同様または同一ですか? – webpersistence

+0

'@ Component'を処理する方法とまったく同じです。 –

関連する問題