【Java基础】注解

版权声明:本文为博主原创文章,转载请注明出处。 https://blog.csdn.net/ca1m0921/article/details/89137492

1. 注解按作用域@Retention分 : 

   RetentionPolicy.SOURCE: Java源文件上的注解
   RetentionPolicy.CLASS: Class类文件上的注解
   RetentionPolicy.RUNTIME: 运行时的注解

2. 注解按 来源分:
    内置注解 如@Override @Deprecated 等等
    第三方注解,如Hibernate, Struts等等
    自定义注解,如仿hibernate的自定义注解

  2.1 常见的 jdk 自带 注解:

     @Override : 重写 ,覆盖

     @Deprecated : 过期的,不建议使用的

     @SuppressWarnings : 屏蔽 警告信息 

     @SafeVaragrs : 涉及 可变参数的内容,不太清楚

     @ FuntionalInterface : 主要用于 Lamdba 表达式

2.3 自定义注解: 

package anno;
 
import static java.lang.annotation.ElementType.METHOD;
import static java.lang.annotation.ElementType.TYPE;
 
import java.lang.annotation.Documented;
import java.lang.annotation.Inherited;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
 
@Target({METHOD,TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Inherited
@Documented
public @interface JDBCConfig {
     String ip();
     int port() default 3306;
     String database();
     String encoding();
     String loginName();
     String password();
}

如何使用:

package util;
 
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
 
import anno.JDBCConfig;
 
@JDBCConfig(ip = "127.0.0.1", database = "test", encoding = "UTF-8", loginName = "root", password = "admin")
public class DBUtil {
    static {
        try {
            Class.forName("com.mysql.jdbc.Driver");
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
    }
 
    public static Connection getConnection() throws SQLException, NoSuchMethodException, SecurityException {
        JDBCConfig config = DBUtil.class.getAnnotation(JDBCConfig.class);
 
        String ip = config.ip();
        int port = config.port();
        String database = config.database();
        String encoding = config.encoding();
        String loginName = config.loginName();
        String password = config.password();
 
        String url = String.format("jdbc:mysql://%s:%d/%s?characterEncoding=%s", ip, port, database, encoding);
        return DriverManager.getConnection(url, loginName, password);
    }
     
    public static void main(String[] args) throws NoSuchMethodException, SecurityException, SQLException {
        Connection c = getConnection();
        System.out.println(c);
    }
}

未完待续

猜你喜欢

转载自blog.csdn.net/ca1m0921/article/details/89137492