自定义java注解(二) 实现DBHelper中的getCon( )得到数据库连接

  1. 定义一个DBinfo 注解
@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
@Inherited
public @interface DBinfo {
    public String URL() ;
    public String Username() ;
    public String Password() ;
    public String Driver() ;
}
  1. 新建DBHelper,实现 getCon方法 注意导包
public class DBHelper {

    @DBinfo(URL="jdbc:mysql://localhost:3306/test",Username="root",Password="Rindy_RR",Driver="com.mysql.jdbc.Driver")
    public Connection getCon(String URL,String Username,String Password,String Driver){
        Connection con=null;
        try{
            Class.forName(Driver).newInstance();
            con=DriverManager.getConnection(URL,Username,Password);
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
        //直接在控制台输出,看con是否成功得到
        System.out.println(con.toString());
        return con;
    }
}
  1. 解析框架的实现
public class ParseDBinfo {
    public void parseMethod(Class clazz) throws InstantiationException, IllegalAccessException, IllegalArgumentException, InvocationTargetException, NoSuchMethodException, SecurityException{
        Object obj = clazz.newInstance();
        Method[] methods=clazz.getDeclaredMethods();

        for(Method m:methods){
            DBinfo dbinfo=m.getAnnotation(DBinfo.class);
            if(dbinfo!=null){
                String URL=dbinfo.URL();
                String Username=dbinfo.Username();
                String Password=dbinfo.Password();
                String Driver=dbinfo.Driver();
                //容错处理
                if(URL!=null && Username!=null && Password!=null && Driver!=null && !URL.equals("") && !Username.equals("") && !Password.equals("") && !Driver.equals("")){

                    m.invoke(obj, URL,Username,Password,Driver);
                }else{
                    System.out.println("参数不能为空!");
                }
            }
        }

 }
}
  1. 测试类
public void testApp() throws InstantiationException, IllegalAccessException, IllegalArgumentException, InvocationTargetException, NoSuchMethodException, SecurityException {
        ParseDBinfo pb=new ParseDBinfo();
        pb.parseMethod(DBHelper.class);
    }

测试结果:

注意getCon( ) 的参数不要写错了,根据自己实际的mysql配置来,其实多写几次,还是很好理解的。下一次,自定义个Junit,@Test @Before @After

版权声明:本文为博主原创文章,谢谢参考!有问题的地方,欢迎纠正,一起进步。

时间: 2024-12-17 04:31:34

自定义java注解(二) 实现DBHelper中的getCon( )得到数据库连接的相关文章

java注解及在butternife中的实践和原理

1.  背景 之前去一个公司,说到了java的注解,问java的注解有几种方式,然后我提到了android中的butternife和afinal注解工具,我们知道butternife在6.1版本的时候还是InjectView,可以到7.1的时候用的却是BInd,这里面有什么区别吗.简单的说,InjectView是在运行的时间进行注解,而BInd在android安装的时候就执行了,肯定后者的执行效率更高些. 接下来说说java的注解吧. 2.  什么是注解 我们有必要对JDK 5.0新增的注解(A

题目一:使用Java实现二维数组中的查找

考点:数组 题目:二维数组中的查找 描述:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数. 方式一:选择从左下角开始搜寻,因为选择在左下角搜寻的话,如果目标值大于搜索值,那么就向右继续搜索,如果目标值小于搜索值,那么就向上继续搜索.在左上角就无法形成这样的判断.时间复杂度为:0(lgn) package cn.imooc.java2; public class Solution

自定义java注解(三) 实现Junit中的@Test、@Before、@After

前面两次的自定义注解,都只是解析了一个注解,今天要讲的junit需要三个注解,而且解析框架中反射激活方法时要根据Before.Test.After的顺序来执行,需要注意的是Test注解可能会有多个,所以我们在外面定义一个数组,用来存储所有由@Test标注的方法.下面来看一下具体实现 三个注解的定义 @Documented @Target(ElementType.METHOD) @Retention(RetentionPolicy.RUNTIME) @Inherited public @inter

深入理解Java:自定义java注解

要深入学习注解,我们就必须能定义自己的注解,并使用注解,在定义自己的注解之前,我们就必须要了解Java为我们提供的元注解和相关定义注解的语法. 元注解: 元注解的作用就是负责注解其他注解.Java5.0定义了4个标准的meta-annotation类型,它们被用来提供对其它 annotation类型作说明.Java5.0定义的元注解: [email protected], [email protected], [email protected], [email protected] 这些类型和它

Java Annotation详解+自定义java注解(一)

上述思维导图的下载地址为:http://download.csdn.net/detail/emilyrr/8975487 注解的注解: 经过上面的学习,我们可以通过元注解来实现一个自定义的HelloWorld注解 第一步:定义一个HelloWorld注解 @Documented @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.METHOD)//定义了注解的作用位置:在方法上 @Inherited//允许子类继承父类中的注解 publ

JAVA注解在SSH开发中的简单应用

在系统开发过程中,出现错误在所难免.虽然系统出错时控制台也会报错,但是因为系统控制台输出太多,往往不能快速定位出现错误的功能点及原因.在此通过使用注解,结合spring的AOP,来制作一个错误输出拦截器. 首先写一个注解类Catcher: @Target({ ElementType.METHOD }) @Retention(RetentionPolicy.RUNTIME) @Documented @Inherited public @interface Catcher {     String 

Java注解介绍

原文链接: Java Annotations: An Introduction原文日期: 2005年10月14日翻译日期: 2014年07月20日翻译人员: 铁锚 翻译完后,感觉这篇文章是不是在http://www.developer.com被挖坟了? Java注解介绍 基于注解(Annotation-based)的Java开发无疑是最新的开发趋势.[译者注: 这是05年的文章,在2014年,毫无疑问,多人合作的开发,使用注解变成很好的合作方式,相互之间的影响和耦合可以很低]. 基于注解的开发将

java注解例子

java注解在web框架中使用比较广泛,这使得对象之间的关系配置起来更加容易 目前web框架中最常用的两种配置对象依赖关系的方式就是注解和xml配置文件的方法,api配置相对来说用的少一些, 下面实现一个Table注解来实现数据库表和实体bean之间的对应关系,实现一个Column注解来实现数据库表中每个字段和实体bean每个属性之间的 对应关系.java中的orm基本上就是根据这种思想来实现的. Table注解代码: package com.panther.dong.annotation.an

深入JAVA注解(Annotation):自定义注解 (转)

原文出自:http://blog.csdn.net/yjclsx/article/details/52101922 一.基础知识:元注解 要深入学习注解,我们就必须能定义自己的注解,并使用注解,在定义自己的注解之前,我们就必须要了解Java为我们提供的元注解和相关定义注解的语法. 元注解: 元注解的作用就是负责注解其他注解.Java5.0定义了4个标准的meta-annotation类型,它们被用来提供对其它 annotation类型作说明.Java5.0定义的元注解: [email prote