`

运行时利用反射获取注解

阅读更多

  1. 对Class、Method、Field以及Constructor对象调用getAnnotation()方法,可以获得与对象关联的特定信息。该方法的一般形式如下:
<A extends Annotation> getAnnotation(Class<A> annoType)
其中,annoType是表示您感兴趣注解的Class对象。该方法返回对注解的一个引用,使用这个引用可以获取与注解成员关联的值。如果没有找到注解,该方法会返回null。如果注解的保留策略不是RUNTIME,就会出现这种情况。

自定义一个注解(需要注意的是注解的保留策略)

import java.lang.annotation.*;
import java.lang.reflect.*;
 
// An annotation type declaration.
@Retention(RetentionPolicy.RUNTIME)
@interface MyAnno {
  String str();
  int val();
}

 自定义一个类Meta(注意获取注解成员属性的方法)

class Meta {
 
  // myMeth now has two arguments.
  @MyAnno(str = "Two Parameters", val = 19)
  public static void myMeth(String str, int i)
  {
    Meta ob = new Meta();
 
    try {
      Class<?> c = ob.getClass();
 
      // Here, the parameter types are specified.
      Method m = c.getMethod("myMeth", String.class, int.class);
 
      MyAnno anno = m.getAnnotation(MyAnno.class);
 
      System.out.println(anno.str() + " " + anno.val());
    } catch (NoSuchMethodException exc) {
       System.out.println("Method Not Found.");
    }
  }
 
  public static void main(String args[]) {
    myMeth("test", 10);

  }
}

 

2. 获取所有注解

可以获取与某个条目关联的具有RUNTIME保留策略的所有注解,具体方法是为该条目调用getAnnotations()方法。该方法的一般形式如下:
 
Annotation[ ] getAnnotations( )
 
上述方法返回一个注解数组。

 

 

这里说明下,因为想要获取业务日志,所以当初的想法是利用AOP获取相应方法的注解,然后注解中描述业务操作信息,但是因为在业务层中添加注解的话,一个业务操作可能涉及多个表的信息,无法准确知道具体的变化的信息,而且还无法判断事务是否一定完成。关于业务日志的还没有好的解决方案。

分享到:
评论

相关推荐

    java自定义注解和通过反射获取注解

    Java自定义注解和通过反射获取注解是Java编程中重要的高级特性,它们极大地增强了代码的可读性和可维护性。注解(Annotation)是一种元数据,提供了在编译时和运行时对代码进行标记的方法,而反射(Reflection)则是...

    java 通过反射获取类上注解,方法上注解,注解里的值及方法参数

    在Java编程中,注解...这个示例涵盖了Java中使用反射获取注解的基本操作,包括类、方法、注解的值和方法参数。通过实践这个例子,你可以更好地理解和掌握这些概念,从而在实际项目中更有效地利用注解和反射。

    利用反射,注解将数据输出至Excel中

    本篇文章将详细讲解如何利用反射和注解将数据导出到Excel文件中。 首先,我们要了解反射的概念。反射是Java语言提供的一种能力,允许程序在运行时检查和操作类、接口、字段和方法等对象。通过反射,我们可以动态地...

    java 注解annotation的使用以及反射如何获取注解

    3. 运行时处理:运行时通过反射获取注解信息,动态调整程序行为,如Spring AOP的切面注解。 4. 配置:通过注解配置组件或服务,如Spring的@Controller、@Service等。 总结,Java注解是一种强大的工具,能够简化代码...

    servlet反射注解例子

    然后,通过反射获取注解的值,并根据这些信息注册Servlet。这使得我们的代码更加模块化,也便于使用依赖注入和其他高级功能。 此外,我们还可以使用`java.lang.reflect`包中的类,如`Class`、`Method`和`Field`,在...

    利用java反射、注解及泛型模拟ORM实现

    1. 反射(Reflection):Java反射机制允许程序在运行时动态地获取类的信息(如类名、方法名、参数类型等)并调用其方法。通过`Class`类,我们可以实例化未知类型的对象,调用私有方法,访问私有字段,以及检查类的...

    运行时注解demo

    以下是如何通过反射获取并处理`MyAnnotation`的例子: ```java public class Main { public static void main(String[] args) throws Exception { Class&lt;?&gt; clazz = Class.forName("AnnotationDemo"); ...

    通过反射获得实体类的字段和值

    在深入探讨如何通过反射获取实体类的字段和值之前,我们先来理解一下反射是什么以及它在.NET框架中的作用。反射是一种强大的编程技术,允许运行时动态地获取类型的信息并操作对象。它提供了对程序集、模块、类型、...

    《利用反射技术处理自定义注解》的设计与实现 AnnotationPrj.7z

    《利用反射技术处理自定义注解》的设计与实现,旨在探讨如何结合这两种机制以实现更灵活、高效的代码处理。 在这个项目中,`AnnotationPrj` 分为四个主要部分:`annotation`、`deal`、`domain` 和 `test`,以及一个...

    java注解之运行时修改字段的注解值操作

    在上面的代码中,我们使用了 Java 的反射机制来获取注解的值。 结论 Java 注解之运行时修改字段的注解值操作是非常有用的技术,可以帮助我们在实际开发中更方便地处理和修改代码。本文主要介绍了 Java 注解之运行...

    反射和注解的妙用-struts2权限的控制

    在`intercept`方法中,我们首先通过`ActionInvocation`对象获取当前被调用的方法名,并使用反射获取该方法的对象。接着检查该方法是否被`@Authority`注解标记,如果是,则读取注解中的`action`和`privilege`属性值,...

    Java基础入门四泛型反射注解.pdf

    在Java基础入门四泛型、反射、注解的学习中,我们会了解到如何正确使用泛型来创建更加健壮的代码,如何利用反射机制实现类和对象的动态操作,以及如何利用注解来简化开发过程和提高代码的可读性。 此外,文档中提到...

    反射,注解原理和使用的方法

    - 自定义注解处理器可以利用反射来动态地创建对象、调用方法,实现灵活的代码生成和运行时行为控制。 理解并熟练掌握反射和注解,能帮助开发者编写出更加灵活、可扩展的代码。在实际项目中,合理运用这两个特性,...

    android 反射注解框架

    这个框架就是利用反射来查找并初始化注解标记的组件。 该框架的核心思想是:通过在布局文件中的视图元素上添加自定义注解,然后在Activity或Fragment的初始化阶段,使用反射遍历布局,找到这些带有注解的视图,并...

    反射+注解自定义ORM

    利用反射和注解,可以方便地获取到类和字段的元信息,从而动态生成对应CRUD(Create、Read、Update、Delete)操作的SQL语句。例如,通过注解`@Table`和`@Column`,可以生成`CREATE TABLE`语句;通过类实例的字段,...

    运行时注解实现控件注入

    在Android中,利用运行时注解实现控件注入是一种常见的优化代码、提高可维护性的技术。 控件注入是将XML布局中的UI元素自动绑定到Activity或Fragment的成员变量上,这样可以避免手动调用`findViewById()`方法,降低...

    Java利用反射获取类信息

    在Java编程语言中,反射(Reflection)是一种强大的工具,它允许程序在运行时检查和操作类、接口、字段以及方法的信息。通过反射,开发者可以动态地创建对象、调用方法、访问字段,甚至修改类的行为。这个过程通常...

    自定义运行期注解

    这里的`@Retention(RetentionPolicy.RUNTIME)`指示此注解将在运行时保留,这样我们就能在程序运行时通过反射获取到它。 接下来,我们将这个注解应用到方法上: ```java public class TestClass { @TimedExecution...

    mybatis-反射包注释.7z

    例如,`ParameterHandler`接口及其实现类`DefaultParameterHandler`通过反射获取参数对象的属性值,并填充到PreparedStatement中。 3. **结果集映射**:在查询结果返回时,MyBatis会根据配置的ResultMap,使用反射...

    Spring IOC 原理 ,Java 反射实例,自定义注解

    接着,我们可以在类上使用这个注解,并在运行时通过反射获取到这个信息: ```java @MyCustomAnnotation(value = "Custom Service") public class CustomServiceImpl implements Service {} ``` 在Spring中,我们...

Global site tag (gtag.js) - Google Analytics