首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 程式設計入門

Java 註解 實戰入門:自訂註解定義、保留策略與反射解析完整範例

     編輯:Java 程式設計入門

專案結構

java_annotation
├─ src
│  ├─ com.b510.hongten.annotation
│  │   └─ JDBCAnnotation.java      // 註解定義
│  ├─ com.b510.hongten.jdbc
│  │   ├─ JDBCUtil.java            // 被註解類別,含解析邏輯
│  │   └─ JDBCTest.java            // 測試入口,實際連資料庫

自訂註解定義

@Documented
@Retention(RetentionPolicy.RUNTIME)  // 執行期可見,供反射讀取
@Target(ElementType.TYPE)            // 僅能標註在類別/介面上
public @interface JDBCAnnotation {
    String driver() default "com.mysql.jdbc.Driver";
    String dbName() default "";
    String encoding() default "UTF-8";
    String port() default "3306";
    String host() default "localhost";
    String userName() default "root";
    String password() default "";
}

使用註解並反射解析


@JDBCAnnotation(dbName = "db_lucene", port = "3306", host = "192.168.0.119", userName = "root", password = "root")
public class JDBCUtil {
    private static String driver, dbName, encoding, port, host, userName, password, url;

    public void checkInterceptor(Class cl) throws Exception {
        if (cl.isAnnotationPresent(JDBCAnnotation.class)) {
            JDBCAnnotation ann = cl.getAnnotation(JDBCAnnotation.class);
            driver = ann.driver();
            dbName = ann.dbName();
            encoding = ann.encoding();
            port = ann.port();
            host = ann.host();
            userName = ann.userName();
            password = ann.password();
            url = "jdbc:mysql://" + host + ":" + port + "/" + dbName + "?characterEncoding=" + encoding;
            System.out.println("JDBCUtil 註解解析完成...");
        }
    }

    public JDBCUtil() { checkInterceptor(JDBCUtil.class); }
    // getter/setter 省略
}

測試驗證


public class JDBCTest {
    public static void main(String[] args) {
        JDBCUtil util = new JDBCUtil(); // 建構子自動解析註解
        String sql = "select * from mymails";
        // 後續使用 util.getUrl(), getUserName() 等建立連線查詢...
    }
}

註解 vs 設定檔

  • 優點:程式碼與配置共存,IDE 支援跳轉、重構、型別檢查,開發效率高。
  • 缺點:修改配置需重編譯;不適合頻繁變動的部署參數。
  • 實務:框架(Spring、Hibernate、MyBatis)大量採用註解驅動,配合設定檔互補。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved