- JDK5.0以降、Javaはアノテーションであるメタデータ(MetaData)のサポートを追加しました
- 注釈は実際にはコード内の特別なマークであり、これらのマークはコンパイル、クラスロード、実行時に読み取ることができ、対応する処理を実行できます。Annotationを使用することにより、プログラマーは元のロジックを変更せずにソースファイルに補足情報を埋め込むことができます。コード分析ツール、開発ツール、および展開ツールは、これらの補足情報を通じて検証または展開できます
- Annotationは修飾子のように使用できます。これは、パッケージ、クラス、コンストラクター、メソッド、メンバー変数、パラメーター、およびローカル変数の宣言を変更するために使用できます。この情報は、Annotationの "name = value"ペアに格納されます。
- JavaEE開発モデルは基本的にアノテーションに基づいています
- ある程度、フレーム=アノテーション+リフレクション+デザインパターン
一般的な注釈の例
ドキュメント関連のメモを生成する
- @author:モジュールを開発した著者を特定し、複数の著者間で使用し、分割します
- @version:モジュールのバージョンを示します
- @see:参照ステアリング(関連トピック)
- @since:どのバージョンから増やすか
- @param:メソッドのパラメーターの説明
- @return:メソッドの戻り値の説明
- @exception:メソッドがスローする可能性のある例外について説明します。メソッドがtheowsで明示的に例外をスローしない場合は、
コンパイル時のフォーマットチェック(JDKに組み込まれた3つの基本的なメモ)
- @Override:親クラスのメソッドのオーバーライドを制限します。このアノテーションはメソッドにのみ使用できます
- @非推奨:変更された要素が古いことを示すために使用されます
- @SupperssWarnings:コンパイラの警告を抑制
コードの依存関係を追跡し、代替の構成ファイル関数を実装する
-
@WebServlet:Servlet3.0以降に提供された注釈、web.xmlにサーブレットをデプロイできません
-
@Transactional:Springフレームワークでの「トランザクション」の管理
@Transactional(propagation=Propagation.REQUIRES_NEW,Isolation=Isolation.READ_COMMITTED,isolation=Islation.READ_COMMITTED,readOnly=false,timeout=3)
JUnitユニットテスト
- @Test:非静的メソッドでマークされ、@ Testでマークされたメソッドのみがテストメソッドとして使用できます
- @BeforeClass:静的メソッドでマークされ、1回だけ実行され、クラスが初期化されるときに実行されます
- @AfterClass:静的メソッドでマークされ、1回だけ実行され、すべてのメソッドが完了した後に実行されます
- @Before:非静的メソッドにマークを付け、@ Testの前に実行し、すべての@Testメソッドの前に実行する
- @After:非静的メソッドにマークを付け、@ Testの後に実行し、@ Testメソッドごとに実行します
- @Ignore:今回はテストに参加しないメソッドにマーク
注:最後の5つの注釈は@Testで使用されます。単独で使用しても意味がありません。
カスタム注釈
-
@interfaceキーワードを使用して、新しい注釈タイプを定義します。
-
カスタムアノテーションは自動的にjava.lang.annotation.Annotationインターフェースを継承します
-
アノテーションメンバー変数は、アノテーション定義でパラメーターなしのメソッドとして宣言されます。メソッド名と戻り値は、メンバーの名前とタイプを定義します。この構成パラメーターを呼び出します。型は、文字列型、クラス型、列挙型、注釈型、上記のすべての型の8つの基本型の配列のみです。
-
アノテーションメンバー変数を定義するときに、その初期値を指定できます。defaultキーワードを使用して、メンバー変数の初期値を指定できます
-
パラメータの唯一のメンバーは、使用することを推奨されている場合は値と呼ばれるパラメータを
-
定義されたアノテーションに構成パラメーターが含まれている場合、使用時にパラメーター値を指定する必要があります
-
いいえメンバーと呼ばれる定義された注釈マーカーメンバ変数を備え、注釈は、メタデータアノテーションと呼ばれていません
注:カスタムアノテーションは、意味のあるアノテーション付きの情報処理フローを伴う必要があります。
JDKのメタ注釈
JDKのメタアノテーションは、他のアノテーション定義を変更するために使用されます!
JDK5.0は、次の4つの標準メタ注釈タイプを提供します。
- 保持:アノテーション定義を変更して、アノテーションのライフサイクルを指定するために使用されます。@ Rententionには、タイプRetentionPolicyのメンバー変数が含まれます。@ Rentention を使用する場合、値メンバー変数の値を指定する必要があります
- RetentionPolicy.SOURCE:ソースファイルで有効、コンパイラーはこの戦略のコメントを直接破棄します
- RetentionPolicy.CLASS:クラスファイルで有効、JVMはJavaプログラムの実行時にコメントを保持しません。デフォルト値
- RetentionPolicy.TUNTIME:実行時に有効です。Javaプログラムを実行すると、JVMはコメントを保持します。プログラムはリフレクションを通じて注釈を取得できます
- ターゲット:アノテーション定義を変更するために使用され、変更されたアノテーションによって変更できるプログラム要素を指定するために使用されます。@ Targetには、valueという名前のメンバー変数も含まれます
- CONSTRUCTOR:コンストラクターについて説明する
- FIELD:説明フィールド
- LOCAL_VARIABLE:ローカル変数を記述します
- 方法:記述方法
- パッケージ:説明パッケージ
- PARAMETER:説明パラメーター
- TYPE:クラス、インターフェース、列挙型宣言を記述します
- Documented:メタAnnotationによって変更されたAnnotationクラスがjavadocツールによってドキュメントに抽出されることを指定するために使用されます。デフォルトでは、javadovcは注釈を含みません
- Documentedを定義するアノテーションは、Retention値をRUNTIMEに設定する必要があります
- 継承:それは注釈がいるだろう変更された継承されたクラスは@Inheritedは注釈を使用して変更された場合、それは自動的にサブクラスのコメントを持っています、
- 少ないアプリケーション