Java Config与注解(转载) 博客分类: java转载
程序员文章站
2024-03-13 14:03:27
...
转载: https://www.cnblogs.com/Johness/archive/2013/04/17/3026689.html
1.注解本质上是一种标记,与xml进行配置相比,只有方式上的差别
2.注解本身也是一种类型,也需要声明
package annotation; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; /** * 自定义注解,用来配置方法 * * @author Johness * */ @Retention(RetentionPolicy.RUNTIME) // 表示注解在运行时依然存在 @Target(ElementType.METHOD) // 表示注解可以被使用于方法上 public @interface SayHiAnnotation { String paramValue() default "johness"; // 表示我的注解需要一个参数 名为"paramValue" 默认值为"johness" }
3.使用注解
package element; import annotation.SayHiAnnotation; /** * 要使用SayHiAnnotation的元素所在类 * 由于我们定义了只有方法才能使用我们的注解,我们就使用多个方法来进行测试 * * @author Johness * */ public class SayHiEmlement { // 普通的方法 public void SayHiDefault(String name){ System.out.println("Hi, " + name); } // 使用注解并传入参数的方法 @SayHiAnnotation(paramValue="Jack") public void SayHiAnnotation(String name){ System.out.println("Hi, " + name); } // 使用注解并使用默认参数的方法 @SayHiAnnotation public void SayHiAnnotationDefault(String name){ System.out.println("Hi, " + name); } }
4.反射来获取被注解的方法,并执行相应的操作
package Main; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import element.SayHiEmlement; import annotation.SayHiAnnotation; public class AnnotionOperator { public static void main(String[] args) throws IllegalAccessException, IllegalArgumentException, InvocationTargetException, ClassNotFoundException { SayHiEmlement element = new SayHiEmlement(); // 初始化一个实例,用于方法调用 Method[] methods = SayHiEmlement.class.getDeclaredMethods(); // 获得所有方法 for (Method method : methods) { SayHiAnnotation annotationTmp = null; if((annotationTmp = method.getAnnotation(SayHiAnnotation.class))!=null) // 检测是否使用了我们的注解 method.invoke(element,annotationTmp.paramValue()); // 如果使用了我们的注解,我们就把注解里的"paramValue"参数值作为方法参数来调用方法 else method.invoke(element, "Rose"); // 如果没有使用我们的注解,我们就需要使用普通的方式来调用方法了 } } }
5.结果
Hi, Jack Hi, johness Hi, Rose
推荐阅读
-
Java Config与注解(转载) 博客分类: java转载
-
Web调用本地程序 博客分类: java转载
-
@Transactional注解事务不起作用的解决 博客分类: Java transactional
-
springboot启动时执行指定方法 博客分类: java转载
-
Java 字符串与文件的相互转换 博客分类: SorLib java字符串文件
-
java使用POI操作Word文档,写入文字与图片 博客分类: JAVA java操作WordApache POIjava使用POI操作Word文档java操作Word文档写入文字与图片
-
JAVA拆箱与装箱及cache范围 博客分类: Java Integer.valueOf()装箱拆箱valueOf缓存范围Character [0~127]
-
JAVA与正则表达式 博客分类: Java javapatternmatcher正则表达式regex
-
[转]log4j详解与实战 博客分类: Java
-
[转]log4j详解与实战 博客分类: Java