使用自定义注解
? ? 一个普通的例子package util;
import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; public class DBUtil { static String ip = "127.0.0.1"; static int port = 3306; static String database = "test"; static String encoding = "UTF-8"; static String loginName = "root"; static String password = "admin"; static{ try { Class.forName("com.mysql.jdbc.Driver"); } catch (ClassNotFoundException e) { e.printStackTrace(); } } public static Connection getConnection() throws SQLException { 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 SQLException { System.out.println(getConnection()); } }
自定义注解@JDBCConfig接下来,就要把DBUtil这个类改造成为支持自定义注解的方式。 首先创建一个注解JDBCConfig
?
public @interface JDBCConfig
?
?
String ip();
int port() default 3306;
String database();
String encoding();
String loginName();
String password();
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(); }
注解方式DBUtil有了自定义注解@JDBCConfig之后,我们就把非注解方式DBUtil改造成为注解方式DBUtil。 package util;
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(); } } }
解析注解接下来就通过反射,获取这个DBUtil这个类上的注解对象
?
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();
?
注解的分类根据注解的作用域@Retention,注解分为 ? 按照注解的来源,也是分为3类 ? 另一个例子 https://www.jianshu.com/p/f85e5212be55 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |