自定义注解以及通过反射获取注解

一、自定义的注解

@Target({ElementType.METHOD,ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Inherited
@Documented
public @interface jdbcConfig {
    String ip();
    int port() default 3306;
    String database();
    String encoding();
    String username();
    String password();
}

二、通过反射获取注解信息

@jdbcConfig(ip="127.0.0.1",database="test",encoding="UTF-8",username="root",password="admin")
public class AnnotationDButil {
    static {
        try {
            Class.forName("com.mysql.jdbc.Driver");
        } catch (ClassNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

    public static Connection getConnection() throws SQLException {
        //通过反射获取注解信息
        jdbcConfig annotation = AnnotationDButil.class.getAnnotation(jdbcConfig.class);
        String ip = annotation.ip();
        int port = annotation.port();
        String database = annotation.database();
        String username = annotation.username();
        String password = annotation.password();
        String encoding = annotation.encoding();
        String url = String.format("jdbc:mysql://%s:%d/%s?characterEncoding=%s", ip,port,database,encoding);
        return DriverManager.getConnection(url, username, password);
    }

    public static void main(String[] args) {
        try {
            Connection c = getConnection();
            System.out.println(c);
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    }
}

原文地址:https://www.cnblogs.com/leduo-zuul/p/10690232.html

时间: 2024-08-28 22:29:06

自定义注解以及通过反射获取注解的相关文章

Java的自定义注解及通过反射获取注解

一.注解基本知识 1.元注解:@Retention @Target @Document @Inherited 2.Annotation型定义为@interface, 所有的Annotation会自动继承java.lang.Annotation这一接口,并且不能再去继承别的类或是接口. 3.参数成员只能用public或默认(default)这两个访问权修饰 4.参数成员只能用基本类型byte,short,char,int,long,float,double,boolean八种基本数据类型和Stri

java反射获取注解并拼接sql语句

先建两个注解 分别为 Table 和 Column package com.hk.test; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; @Target({ElementType.TYPE}) @Retention(Ret

java注解使用、java获取注解的属性、获取注解的字段值

一.前言 1.前面一直讲注解的基础知识,注解的定义,对于注解的使用几乎是一笔略过,本篇将着重讲讲注解的使用. 获取注解的属性,通过反射获取注解的属性值. 二.示例代码 1.定义一个注解,用于给 全局变量 field 字段 赋值 package com.haha.study.annotation.value;import java.lang.annotation.Documented;import java.lang.annotation.ElementType;import java.lang.

JAVA自定义注解 和 运行时靠 反射获取注解,解决 shiro 注解型权限因子获取问题

项目的权限分配,采用的是RBAC的设计模式.后台配置权限的时候,需要获取到所有的权限因子. 不经让我想起YII框架的SRBAC模块,还有以前的一个ecshop改造系统的权限配置方式,都采用的是PHP的反射机制. 于是把PHP项目的经验带到JAVA项目中,发现PHP中的经验在java中,实现起来不是那么的方便. 这主要的原因:一是语言上的特性导致权限控制方面的差异性. 二是项目使用的是SSH框架,action的名称已经使用注解替换了原有名称.使用反射获取到的类名和方法名组合,不是有效的权限因子(当

Java自定义注解和运行时靠反射获取注解

Java注解是附加在代码中的一些元信息,用于一些工具在编译.运行时进行解析和使用,起到说明.配置的功能.注解不会也不能影响代码的实际逻辑,仅仅起到辅助性的作用.包含在 java.lang.annotation 包中. 1.元注解 元注解是指注解的注解.包括  @Retention @Target @Document @Inherited四种. 1.1.@Retention: 定义注解的保留策略 @Retention(RetentionPolicy.SOURCE)   //注解仅存在于源码中,在c

Java 自定义注解及利用反射读取注解

一.自定义注解 元注解: @interface注解: 定义注解接口 @Target注解: 用于约束被描述的注解的使用范围,当被描述的注解超出使用范围则编译失败.如:ElementType.METHOD,ElementType.TYPE: @Retention 注解:用于约束被定义注解的作用范围,作用范围有三个: 1,.RetentionPolicy.SOURCE:作用范围是源码,作用于Java文件中,当执行javac时去除该注解. 2.RetentionPolicy.CLASS:作用范围是二进制

自定义注解,通过反射获得注解中的值(详细自定义注解解释)

自定义注解(@Alias): package com.nf.lc.demo3; import java.lang.annotation.*; /* 定义注解的生命周期元注解:@Retention RetentionPolicy.SOURCE 在编译阶段丢弃,编译结束没有任何意义 RetentionPolicy.CLASS 在类加载时丢弃,字节码文件处理时有用,默认这种方式 ☆ RetentionPolicy.RUNTIME 始终不会丢弃,运行时期也保留该注解,可以通过反射机制读取该信息 */ @

java 通过反射获取注解

package com.mine.practice.reflectfield; import java.lang.annotation.Annotation; import java.lang.reflect.Field; import java.lang.reflect.Method; import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; import

14Junit、反射、注解

14.1.1 Junit的概述      一般IDE都内置了junit,若需要自行下载jar包,可以访问官网,官网地址如下:http://www.junit.org 1. 特点   - 方法命名规则:以test开头,使用驼峰命名法.   - 方法声明上:必须使用注解:@Test,必须使用public修饰符,没有返回值,方法没有参数.  2. 运行测试方法   - 选中方法名:右键 --> Run 测试方法名,则运行选中的测试方法     比如测试方法名为testSum,则右键 --> Run