Spring: @Serviceと@Componentの区別は?
@ComponentアノテーションはJavaのクラスにつけるもので このクラスをコンテナが管理するBeanとして登録する機能です。 @Serviceアノテーションも現状では@Componentと違いはありませんが、 通常サービス層のコンポネントは@Serviceアノテーションをつけます。
その理由は主に以下の二つです。
- コンポーネントがサービス層のコンポーネントを明確にする意味で
- @Serviceアノテーションを付与したBeanには自動的にトランザクション管理の機能が付与されるなどの機能拡張も期待される
Spring3.0のリリースノートを見たところ特に@Serviceに関する変更はないみたいです。 なのでサービス層のクラスに対して@Componentか@Serviceか悩んでるんだっだら @Serviceをつけた方がいいでしょう。