web-dev-qa-db-ja.com

@Repositoryと@Autowiredの用途は何ですか。 (春)

Javaを3か月間学習していますが、何かの使用目的が理解できないことがあります。

1つのトピックは、依存関係の注入と春の豆でした。

現在、2つのアノテーション@Autowiredと@Repositoryと混同しています。最初に自動配線とはどういう意味ですか?その後、なぜそれらを使用する必要がありますか?それらを使用することと使用しないことの違いは何ですか?

また、今日私は春のmvcプロジェクトでhibernateを使用しようとしましたが、プロジェクトで使用されている他のjarファイルの依存関係のため、約15(クラスが見つからないためエラー)jarファイルを検索する必要がありました。これはこの方法でなければなりませんでしたか?これは、学習をJava初心者にとって非常に困難にします

ありがとう...

21
mehmet6parmak

@Repositoryは、特定のクラスをデータアクセスオブジェクトとしてマークし、その役割を明確にする注釈です。同じカテゴリの他のマーカーは、@ Serviceおよび@Controllerです。

@Autowiredは完全に異なる意味を持つアノテーションです。基本的に、DIコンテナに依存関係を注入するように指示します。詳細は http://apollo89.com/Java/spring-framework-2.5.3/api/org/springframework/beans/factory/annotation/Autowired.html
tutorialpoint で詳細を編集
または docs.spring.io

36
Bogdan

どちらのアノテーションも、使用する目的が異なります。

@Autowired:これは、構成ファイルで定義する<bean="xyz" autowire="byType">と同じです。 @Autowiredで注釈が付けられた参照変数(依存関係)は、@ Configurationクラスにある一致する@BeanとしてSpringコンテナーによって注入されます。
さらに、@ Component、@ Service、@ Repositoryで注釈が付けられたクラスは、Beanと見なされすぎるため、それらのオブジェクトは一致する依存関係に挿入されます。 Springコンテナーは、 "component-scan"または@ComponentScan( "xyz")について言及したクラスのBeanをスキャンします。

@Repository:これは、スプリングフレームワークの注釈でもあります。クラス@Repositoryに注釈を付けると、SpringコンテナーはそれがDAOクラスであることを理解し、チェックされていないすべての例外(DAOメソッドからスロー)をSpring DataAccessExceptionに変換します。 DAOクラスは、dbに対して操作を実行するメソッドを記述するクラスです。

7
Arun Raaj

@Autowiredと@Repositoryは非常に2つの異なる概念です。 1. @リポジトリ:これはリポジトリとしてクラスを定義します。一般的な用語では単に@Componentを使用できますが、具体的に定義すると、Controller、service、repositoryなどの3つのアノテーションがあります。主に2つの利点:1。 (context:component-scan)servlet.xmlで、定義されたパッケージをスキャンして、春までに独自のパッケージを見つけます。 2.データベースアクセスエラーの変換のように、Springから得られるより多くの利点があるため、主にhibernateまたはjdbcを使用してデータベースに接続しているクラスで使用するように定義されています。

@Autowired:実行時にスプリングで依存関係を注入するには、クラスで、オブジェクトを自動配線して使用するため、このBeanはxmlファイルで定義せずに自動的に作成されます

0
Karan guptA