22

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

1つのトピックは依存性注入と春の豆でした私は最終的に理解しました=)

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

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

ありがとう...

4

3 に答える 3

39

@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をご覧ください。

于 2010-10-21T13:55:59.620 に答える
10

両方の注釈には、使用する目的が異なります。

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

@Repository:これはSpring-frameworkの注釈でもあります。クラス@Repositoryにアノテーションを付けると、SpringコンテナはそれがDAOクラスであることを認識し、チェックされていないすべての例外(DAOメソッドからスローされる)をSpringDataAccessExceptionに変換します。DAOクラスは、dbに対して操作を実行するためのメソッドを作成するクラスです。

于 2017-11-09T12:58:22.250 に答える
1

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

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

于 2015-10-07T09:34:43.457 に答える