Spring-mvcを使用してWebアプリケーションを開発しています。
これで、@ Controller、@ Service、および@Repositoryステレオタイプが使用可能になります。
特に私が使用しているため、@ Controllerは特に便利であるとわかりました
<context:component-scan base-package="my.cool.controller"/>
@Serviceと@Repositoryに関して、これまでのところ
それで、より良い例外を除いて、他にどんな利点がありますか?注釈クラスはパフォーマンスに影響を与えますか?
ステレオタイプの説明:
@Service
-すべてのサービスクラスに@Serviceアノテーションを付けます。このレイヤーは作業単位を認識しています。すべてのビジネスロジックはServiceクラスにあります。通常、サービス層のメソッドはトランザクションでカバーされます。サービスメソッドから複数のDAO呼び出しを行うことができます。1つのトランザクションが失敗すると、すべてのトランザクションがロールバックされます。@Repository
-すべてのDAOクラスに@Repositoryで注釈を付けます。すべてのデータベースアクセスロジックはDAOクラスにある必要があります。@Component
-他のコンポーネント(たとえば、RESTリソースクラス)にコンポーネントステレオタイプで注釈を付けます。@Autowired
-@Autowiredアノテーションを使用して、Springに他のBeanをクラスに自動接続させます。@Component
は、任意のSpring管理コンポーネントの一般的なステレオタイプです。 @Repository
、@Service
、および@Controller
は、それぞれ永続性、サービス、プレゼンテーションレイヤーなど、より具体的なユースケース向けの@Component
の特殊化です。
それらを使用する理由:
bean
定義を記述する必要はありません。代わりに、クラスに注釈を付け、それらを自動配線で使用します。現在、コンテキストXML Beanとアノテーションを使用することによる実際のパフォーマンスへの影響は同じです。コンポーネントのスキャンは少し高価です(@ Service、@ Componentをスキャンする場合)。注釈はリフレクション、xmlで「解析」されます-xmlパーサーで。しかし、あなたが言ったように、それは起動時です-それは一度だけ起こります。また、適度なマシンでは、注釈を付けても、すぐに起動します。
コンポーネントスキャンにより、xmlまたはJava構成を使用して手動で各Beanを定義する必要がなくなります。
サービスレイヤー、データレイヤーなどのレイヤーを定義するために複数のステレオタイプがあります。また、特定のタイプを実行する場合は、異なるステレオタイプに基づいて行うことができます。