春には、XML設定ファイルを使用しても豆の組立作業を実現することができますが、アプリケーションのより多く、豆は、XML設定ファイルにつながる場合は維持し、アップグレードするためにいくつかの困難をもたらすので、あまりにも肥大化しています。 JavaはJDKから 5.0 将来において、提供される注釈(アノテーション)関数は、春はまた、アノテーション技術を完全にサポートを提供します。Spring3は、一般的注釈として使用されるアノテーション(注釈)のシリーズを、定義されました。 1 )@Component あなたはこのノートは春豆で説明し使用することができますが、それは概念を一般化したものである、一成分のみ(豆)を表し、任意のレベルで作用することができます。単純に対応するクラス内のアノテーションに注釈を使用します。 2 )@Repository スプリングビーンにおいて同定されたデータ・アクセス・レイヤー・クラス(DAO層)のために、機能は同じ@Componentあります。 3 )@Service 通常、ビジネス層(サービス層)に適用され、春豆のサービス層のアイデンティティのクラスのために、機能は同じ@Componentです。 4 )@Controller クラス識別は、通常、制御層(例えば、Struts2のアクション)、春豆の制御層に適用され、機能が同じ@Componentあります。 5 )@Autowired 豆は、属性変数、属性セット方法やプロセッサはBeanの設定を自動的に行う注釈作業に対応して、タグ付けのコンストラクタです。デフォルトのタイプは、豆に合わせて組み立てられています。 6 )@Resource その役割とAutowired同じ。違いは、アセンブリデフォルト@Autowired豆の種類に応じて、デフォルト@Resourceビーンインスタンス名に従って組み立てられたことです。 名前やタイプ:@Resource二つの重要な属性があります。 春はtype属性の解決さは、Beanインスタンスの型に、name属性Beanインスタンス名に解決されます。name属性が指定されている場合は、インスタンス名を押して組み立て、指定された属性タイプは、プレス型ビーンが組み立てた場合。 あなたが一致しないことができれば、その後、アセンブリは、豆の種類に応じて、組立プレスBeanインスタンスの名前を指定しない場合、あなたが一致しない場合は、NoSuchBeanDefinitionExceptionがスローされます。 7 )@Qualifier アノテーションと連携を@Autowired、デフォルトでビーン型ビーンアセンブリインスタンス名、パラメータで指定されたインスタンスビーン@Qualifier注釈の名前を適合させることによって修飾するからです。
1 。DAO層インターフェースを作成します。 Srcは、パケットにPersonDaoと呼ばれるインターフェイスを作成し、com.mengma.annotationパケットという名前のディレクトリの下に作成し、以下に示すように、add()メソッドを追加します。 パッケージcom.mengma.annotation。 パブリック インターフェースPersonDao { 公共 ボイド追加(); } 2 。DAO層インタフェースの実装クラスを作成します。 下図のように編集したcom.mengma.annotationパッケージにて実装インタフェースPersonDaoImpl PersonDaoというクラスを作成します。 パッケージcom.mengma.annotation。 輸入org.springframework.stereotype.Repository。 @Repository( "personDao" ) パブリック クラス PersonDaoImpl 実装PersonDao { @オーバーライド 公共 のボイドアドオン(){ System.out.println(「追加層ダオ()メソッドが実行されて...」); } } 上記のコード、豆、コンフィギュレーション・ファイルに対応するの文言としてこれを識別する注釈@RepositoryスプリングPersonDaoImplを使用する最初の <ビーンID =「PersonDao」クラス =「com.mengma.annotation.PersonDaoImpl」/>書き込み。そして、メソッド呼び出しの成功を検証するために使用されるワードadd()メソッドを出力します。
3 。サービスレイヤインタフェースの作成 com.mengma.annotationパッケージでPersonServiceと呼ばれるインタフェースを作成し、以下に示すように、add()メソッドを追加します。 パッケージcom.mengma.annotation。 パブリック インターフェースPersonService { 公共 ボイド追加(); } 4 サービスレイヤインタフェースの実装クラスを作成します。 下図のように編集したcom.mengma.annotationパッケージにて実装インタフェースPersonServiceImpl PersonServiceというクラスを作成します。 パッケージcom.mengma.annotation。 輸入javax.annotation.Resource; 輸入org.springframework.stereotype.Service。 @Service( "personService" ) パブリック クラス PersonServiceImpl 実装PersonService { @Resource(名前 = "personDao" ) プライベートPersonDao personDao。 公共PersonDao getPersonDao(){ 戻りpersonDaoと、 } @オーバーライド 公共 のボイドアドオン(){ personDao.add(); // コールpersonDao add()メソッド のSystem.out.println( "サービス層を追加()メソッドが実行されています..." ); } } 上記のコード、豆、コンフィギュレーション・ファイルに対応するの文言としてこれを識別する注釈@ServiceスプリングPersonServiceImplを使用する最初の <ビーンID =「PersonService」クラス =「com.mengma.annotation.PersonServiceImpl」/> 書き込み。 次いでPersonDaoが構成ファイルに相当し、(さらに上PersonDao setPersonDao()メソッドにマークされた)注釈特性に@Resource注釈 <プロパティ名=「personDao」REF =「personDao」/> 文言。最後の呼び出しは、クラスのadd()メソッド、および出力ワードでadd()メソッドをpersonDao。
5 。アクションの作成 下図のように編集したcom.mengma.annotationパッケージでPersonActionという名前のクラスを作成します。 パッケージcom.mengma.annotation。 輸入javax.annotation.Resource; 輸入org.springframework.stereotype.Controller; @Controller( "personAction" ) パブリック クラスPersonAction { @Resource(名前 = "personService" ) プライベートPersonService personService。 公共PersonService getPersonService(){ 戻りpersonServiceと、 } 公共 のボイドアドオン(){ personService.add(); // add()メソッドの呼び出しpersonService のSystem.out.println( "アクション層を()メソッドが実行される...追加" ); } } 上記のコードは、第一アノテーション・ラベルが設定ファイルに書き込まれた書き込みに匹敵する@Controller PersonActionクラスを使用する <ビーンID =「PersonAction」クラス =「com.mengma.annotation.PersonAction」/> 。 そして、注釈@Resource personService、上にマークされているプログラムされたプロファイルに対応し、<プロパティ名=「PersonService」REF =「PersonService」/> 。 最後に、そのadd()メソッド、および出力ワードのadd()メソッドのpersonServiceを呼び出します。
6 。Spring構成ファイルを作成します。 次のように設定ファイルを作成すると、com.mengma.annotationパッケージでapplicationContext.xmlをと呼ばれます。 <?xml version = "1.0" エンコード= "UTF-8"?> <豆のxmlns = "http://www.springframework.org/schema/beans" のxmlns:XSI = "http://www.w3.org/2001/XMLSchema-instance" のxmlns:AOP = "のhttp:// WWW .springframework.org /スキーマ/ AOP」 のxmlns:P = "http://www.springframework.org/schema/p" のxmlns:TX = "http://www.springframework.org/schema/tx" のxmlns:コンテキスト = "http://www.springframework.org/schema/context" のxsi:schemaLocationの = " のhttp:// www.springframework.org/schema/beans ます。http:// www.springframework.org/schema/beans/spring-豆-2.5.xsd のhttp://www.springframework.org/schema/aop ます。http:// www.springframework.org/schema/aop/spring-aop-2.5.xsd ます。http:// www.springframework.org/schema/tx ます。http:// www.springframework .ORG /スキーマ/ TX /春-TX-2.5.xsd のhttp:// www.springframework.org/schema/context ます。http:// www.springframework.org/schema/context/spring-context.xsd "> <! - 使用して、コンテキスト・ネームスペースは、通知のスプリングは、アノテーションを解析、指定されたディレクトリをスキャンします - > <コンテキスト:コンポーネント・スキャンベース- パッケージ =「com.mengma.annotation」/> </豆> 以前の設定ファイルと比較し、上記コードのライン7に加え、<豆>要素、ライン15及びライン16は、コンテキストコード、コードの最初の行18、コンテキストを含みます塩基成分スキャン走査要素の名前空間注釈パッケージ特性がスプリングスキャンディレクトリに通知するために必要。
7 。テストクラスを作成します。 下図のように編集したcom.mengma.annotationパッケージでAnnotationTestという名前のテストクラスを作成します。 パッケージcom.mengma.annotation。 輸入org.junit.Test; 輸入org.springframework.context.ApplicationContext; 輸入org.springframework.context.support.ClassPathXmlApplicationContext; パブリック クラスAnnotationTest { @テスト 公共 のボイドテスト(){ // 設定ファイルの春のパスの定義 文字列XMLPath =「COM / mengma /注釈/ applicationContext.xmlを」; //は、Springコンテナを初期化し、コンフィギュレーションファイル、豆の例とロード のApplicationContextのApplicationContext = 新新(ClassPathXmlApplicationContextを xmlPath); // GET PersonAction例 PersonAction PersonAction = (PersonAction)のApplicationContext .getBean( "personAction" ); // コールpersonAction add()メソッド personAction.add(); } } 最初のローディングによって上記コード設定ファイルとインスタンスの追加()メソッドInvoke次いでインスタンスpersonActionを得ます。
8 。プログラムを実行し、結果を確認
図の出力に示されるようにJUnitは、成功した操作の後、テスト()メソッドを使用してテスト