Java后端03(浅谈注解)

发布时间 2023-08-03 16:45:21作者: te9uila

注解

功能一:提示信息 功能二:存储信息

​ 注解需要定义注解类,类对象需要有落实的实体,注解可以出现在类Class上,方法Method上,成员变量Field上以及构造方法Constructor上,注解对象需要被添加注解的实体所对应的反射对象进行获取,人话:要获得注解信息,首先要获得修饰的东西的反射对象!!!!!!

元注解(用来注解注解的注解)(?什么玩意。。。抽象的很)

内置注解

  1. @Overeide方法重写注解,如果添加了该注解的方法,并没有重写父类的方法,编译无法通过
  2. @Deprecated方法弃用注解,如果添加了该注解的方法,该方法在后续版本迭代时,有可能会被淘汰
  3. @SuppressWarnings(all)抑制警告注解,如果代码出现了警告,可以使用该注解,抑制警告的产生
  4. @FunctionalInterfaxe函数式接口,如果一个接口只有一个抽象方法,则这个接口就叫做函数式接口

自定义注解

// 该元注解的作用是用来定义该注解的生命周期
@Retention(RetentionPolicy.RUNTIME)
// 定义注解可以在哪里进行使用
@Target({ElementType.TYPE,ElementType.METHOD})
// 表示该注解可以被子类继承
@Inherited
// 表示该注解支持生成 JavaDoc 文档
@Documented
// @Repeatable() JDK1.8新增元注解 表示该注解可以在同一位置多次使用
public @interface DB {
    // 注解中特有的属性,用来定义注解可以存储的属性
    // 需要通过元注解来定义该注解的性质
    String driverClassName();
    String url();
    String username();
    String password();
}
// 自定义注解的使用
@DB(driverClassName = "com.mysql.cj.jdbc.Driver",url = "jdbc:mysql://localhost:3306/iweb?characterEncoding =utf8",username = "root",password = "123456")
public class DBUtil {
    public static Connection getConnection() throws ClassNotFoundException, SQLException {
        // 从注解中提取属性值,从而获取JDBC连接
        DB db = DBUtil.class.getAnnotation(DB.class);
        String driverClassName = db.driverClassName();
        String url = db.url();
        String username = db.username();
        String password = db.password();
        
        Class.forName(driverClassName);
        Connection c = DriverManager.getConnection(url,username,password);
        return c;
    }
}