1: アノテーションの理解:
注釈の概要
JavaSE では、アノテーションを使用する目的は、廃止された関数にマークを付ける、警告を無視するなど、比較的単純です。JavaEE/Android では、アノテーションはより重要な役割を果たします。たとえば、アプリケーションのあらゆる側面を構成し、古いバージョンの JavaEE に残された煩雑なコードと XML 構成を置き換えます。
将来の開発モデルはアノテーションに基づいています。JPA はアノテーションに基づいています。Spring 2.5 以降はアノテーションに基づいています。Hibernate 3.x 以降もアノテーションに基づいています。現在、Struts2 の一部もアノテーションに基づいています。アノテーションはトレンドです。 、ある程度までは、フレームワーク = アノテーション + リフレクション + デザインパターンと言えます。
2: 一般的なアノテーションの例
注釈を使用する場合は、その前に @ 記号を追加し、注釈を修飾子として使用します。サポートするプログラム要素を装飾するために使用されます
例 1: ドキュメント関連の注釈を生成する
@author は、このタイプのモジュールを開発した作成者を示します。複数の作成者間で使用され、分割されます。
@version は、このタイプのモジュールのバージョンを示します
@see はターン、つまり関連トピックを指します。
@どのバージョンから追加されたの
@paramメソッド内のパラメータの説明、パラメータが無い場合は記述できません
@returnメソッドの戻り値の説明、メソッドの戻り値の型が void の場合は記述できません
@Exception は、メソッドによってスローされる可能性のある例外を説明します。メソッドが throws で明示的に例外をスローしない場合、メソッドを記述することはできません。
の
@param @return および @Exception の 3 つのタグはメソッドにのみ使用されます。
@param の形式要件: @param パラメータ名 パラメータの種類 パラメータの説明
@return の形式要件: @return 戻り値の種類 戻り値の説明
@Exception のフォーマット要件: @Exception 例外の種類 例外の説明
@param と @Exception は複数同時に実行できます
例えば:
package com.annotation.javadoc;
/**
* @author shkstart
* @version 1.0
* @see Math.java
*/
public class JavadocTest {
/**
* 程序的主方法,程序的入口
* @param args String[] 命令行参数
*/
public static void main(String[] args) {
}
/**
* 求圆面积的方法
* @param radius double 半径值
* @return double 圆的面积
*/
public static double getArea(double radius){
return Math.PI * radius * radius;
}
}
例 2: コンパイル時の形式チェック (JDK に組み込まれた 3 つの基本的なアノテーション)
@Override : 親クラスのメソッドのオーバーライドが制限されています。このアノテーションはメソッドに対してのみ使用できます。
@Deprecated:変更された要素 (クラス、メソッドなど) が廃止されたことを示すために使用されます。通常、変更された構造は危険であるか、より良い代替手段が存在するためです。
@SuppressWarnings : コンパイラ警告を抑制します
例:
package com.annotation.javadoc;
public class AnnotationTest{
public static void main(String[] args) {
@SuppressWarnings("unused")
int a = 10;
}
@Deprecated
public void print(){
System.out.println("过时的方法");
}
@Override
public String toString() {
return "重写的toString方法()";
}
}
例 3: コードの依存関係の追跡と代替構成ファイル関数の実装
Servlet3.0 はアノテーションを提供するため、web.xml ファイルにサーブレットをデプロイする必要がなくなりました。
例:
@WebServlet("/login")
public class LoginServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws
ServletException, IOException { }
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws
ServletException, IOException {
doGet(request, response);
} }
<servlet>
<servlet-name>LoginServlet</servlet-name>
<servlet-class>com.servlet.LoginServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>LoginServlet</servlet-name>
<url-pattern>/login</url-pattern>
</servlet-mapping>
Springフレームワークにおける「トランザクション」の管理
@Transactional(propagation=Propagation.REQUIRES_NEW,
isolation=Isolation.READ_COMMITTED,readOnly=false,timeout=3)
public void buyBook(String username, String isbn) {
//1.查询书的单价
int price = bookShopDao.findBookPriceByIsbn(isbn);
//2. 更新库存
bookShopDao.updateBookStock(isbn);
//3. 更新用户的余额
bookShopDao.updateUserAccount(username, price);
}
<!-- 配置事务属性 -->
<tx:advice transaction-manager="dataSourceTransactionManager" id="txAdvice">
<tx:attributes>
<!-- 配置每个方法使用的事务属性 -->
<tx:method name="buyBook" propagation="REQUIRES_NEW"
isolation="READ_COMMITTED" read-only="false" timeout="3" />
</tx:attributes>
</tx:advice>
見てくれてありがとう!!!