您的位置:

如何使用java自定义注解,如何使用java自定义注解文件

本文目录一览:

java 如何自定义注解

通过java注释和javadoc,但是注解提供的功能要远远超过这些。注解不仅包含了元数据,它还可以作用于程序运行过程中、注解解释器可以通过注解决定程序的执行顺序。例如,在Jersey webservice 我们为方法添加URI字符串的形式的**PATH**注解,那么在程序运行过程中jerser解释程序将决定该方法去调用所给的URI。

springboot 面向切面编程之使用自定义注解

我们知道使用@Pointcut注解定义切点,它的value属性可以是 切点表达式 或者 注解的全限定名 ;若使用注解的方式,直接在目标切入点方法上加上自定义注解即可纳入AOP的管理

在创建自定义注解时有看到三个注解,分别了解它们的作用

我们先来看看这个枚举类java.lang.annotation.ElementType就是定义注解使用的地方。比如 @Target(ElementType.METHOD) 就是只能用在方法上了。不过可以同时指定多个ElementType的属性来达到既可以用在方法上也可以用在类上的目的: @Target({ElementType.TYPE, ElementType.METHOD})

Documented注解表明这个注释是由 javadoc记录的。 如果一个类型声明被注释了文档化,它的注释成为公共API的一部分。

再来看这个枚举类 java.lang.annotation.RetentionPolicy。该类主要功能是定义注解的 生命周期

创建注解类TestAnnotation。里面有一个name参数,默认是no;没错,该注解只能用在方法上,不能用在类、接口;而且是运行时类型的

在目标方法上使用注解

创建切面类

最后重启工程,访问 和

如何实现自定义Java编译时注解功能

自定义注解,可以应用到反射中,比如自己写个小框架。

如实现实体类某些属性不自动赋值,或者验证某个对象属性完整性等

本人自己用过的验证属性值完整性:

@Target(ElementType.FIELD)

@Retention(RetentionPolicy.RUNTIME)

public @interface IgnoreProperty {

}

然后实体类中:

public class TarResearch implements Serializable{

@IgnoreProperty

private static final long serialVersionUID = 1L;

@IgnoreProperty

private Integer researchId;

@IgnoreProperty

private TarUser userId;

private String version;

private String grade;

....

}

然后action类中

// 验证数据完整性

ClassTarResearch userClass = TarResearch .class;

Field[] field = userClass.getDeclaredFields();

for (int i = 0; i field.length; i++) {

if (field[i].getAnnotation(IgnoreProperty.class) != null) {

continue;

}

String fie = field[i].getName().substring(0, 1).toUpperCase()

+ field[i].getName().substring(1);

Method method = userClass.getMethod("get" + fie);

Object obj = method.invoke(u);

if (obj == null) {

sendResponseMsg(response, "数据错误");

return null;

}

}