元注解[email protected]和@Retention

元注解

作用:用来修饰注解
@Target ----- 作用对象

@Retention ----作用时期
作用范围@Reatention:枚举类型 ElementType
1: Source:注解只保留在源文件,当Java文件编译成class文件的时候,注解被遗弃;
源码: Annotations are to be discarded by the compiler.
2: Class:注解被保留到class文件,但jvm加载class文件时候被遗弃,这是默认的生命周期
源码: Annotations are to be recorded in the class file by the compiler,but need not be retained by the VM at run time. This is the default behavior.

  1. Runtime:注解不仅被保存到class文件中,jvm加载class文件之后,仍然存在。
    源码: Annotations are to be recorded in the class file by the compiler andretained by the VM at run time, so they may be read reflectively.
@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.ANNOTATION_TYPE)
public @interface Retention {
    /**
     * Returns the retention policy.
     * @return the retention policy
     */
    RetentionPolicy value();
}
public enum RetentionPolicy {
    /**
     * Annotations are to be discarded by the compiler.
     */
    SOURCE,

    /**
     * Annotations are to be recorded in the class file by the compiler
     * but need not be retained by the VM at run time.  This is the default
     * behavior.
     */
    CLASS,

    /**
     * Annotations are to be recorded in the class file by the compiler and
     * retained by the VM at run time, so they may be read reflectively.
     *
     * @see java.lang.reflect.AnnotatedElement
     */
    RUNTIME
}

三个作用时期分别可以对应文件的
Source ---- 源文件(.java文件)
Class ---- 编译文件(.class文件)
Runtime ---- 运行文件(字节码)

原文地址:http://blog.51cto.com/13962277/2172984

时间: 2024-11-02 20:52:30

元注解[email protected]和@Retention的相关文章

(转)spring boot注解 [email protected] 异步调用

原文:http://www.cnblogs.com/azhqiang/p/5609615.html EnableAsync注解的意思是可以异步执行,就是开启多线程的意思.可以标注在方法.类上. 1 @Component 2 public class Task { 3 4 @Async 5 public void doTaskOne() throws Exception { 6 // 同上内容,省略 7 } 8 9 @Async 10 public void doTaskTwo() throws

[转]Spring注解[email protected]注解、@Bean注解以及配置自动扫描、bean作用域

1.@Configuration标注在类上,相当于把该类作为spring的xml配置文件中的<beans>,作用为:配置spring容器(应用上下文) package com.test.spring.support.configuration; @Configuration public class TestConfiguration { public TestConfiguration(){ System.out.println("spring容器启动初始化...");

Springboot 相关注解 [email&#160;protected]

@WebServlet注解: @WebServlet注解一般在类上声明使用.一般情况下此类要继承 Servlet案例如下: @WebServlet(urlPatterns = "/druid/*", initParams={ @WebInitParam(name="allow",value="127.0.0.1"),// IP白名单 (没有配置或者为空,则允许所有访问) @WebInitParam(name="deny",va

注解@[email&#160;protected]

在Controller中需要注入service那么我的这个server有两个实现类如何区分开这两个impl呢 根据注入资源的注解不同实现的方式有一点小小的区别 在Controller中使用 @Autowired注入时 Qualifier的意思是合格者,通过这个标示,表明了哪个实现类才是我们所需要的,添加@Qualifier注解,需要注意的是@Qualifier的参数名称为我们之前定义@Service注解的名称之一. ##使用@Resource注入时 使用@resource注入时比较简单了注解自带

页面输出格式常用注解[email&#160;protected],@JsonFormat,@JsonFormat

1.注解名称:@JsonIgnore 作用:在实体类向前台返回数据时用来忽略不想传递给前台的属性或接口. Eg:User实体中会有字段password字段, 当返回用户信息给前台的时候,当然是不希望将password值也一并返回.所以,这个时候可以在password属性上加上注解JsonIgnore或者, 可以在User类上加上注解@JsonIgnoreProperties(value = "{password}") 2.注解名称:@JsonFormat 前台使用固定时间格式时可以在属

JavaEE开发之Spring中的条件注解、组合注解与元注解

上篇博客我们详细的聊了<JavaEE开发之Spring中的多线程编程以及任务定时器详解>,本篇博客我们就来聊聊条件注解@Conditional以及组合条件.条件注解说简单点就是根据特定的条件来选择Bean对象的创建.条件注解就是可以根据不同的条件来做出不同的事情.在Spring中条件注解可以说是设计模式中状态模式的一种体现方式,同时也是面向对象编程中多态的应用部分.而组合注解就是将现有的注解进行组合.下方会给出具体的介绍和实例. 一.条件注解[email protected] 本篇博客的本部分

java 元注解

java元注解的作用是注解其他注解,java5.0定义了四个标准的元注解:@Target.@Retention.@Inherit.@Documented. 1)@Target:用于描述注解可以修饰的类型.其可选值为:(ElementType.TYPE) ANNOTATION_TYPE(注解类型声明) PACKAGE(包) TYPE(类.接口.枚举) METHOD(方法声明) FIELD(成员变量) LOCAL_VARIABLE(本地变量) CONSTRUCTOR(构造方法) 其代码如下: @Do

[email&#160;protected] 注解原理与使用

Java反射 java反射机制的定义: 在运行转态时(动态的)时. 对于任意一个类,都能够知道这个类的所有属性和方法 对于任意一个对象,都能够知道调用它的任意属性和方法 Class对象 java中用对象来对现实生活中的事物进行抽象,如人(现实生活)抽象到一个person类(java对象).但有没有想过,java中的类(现实生活)其实也是一个Class对象(对象).因此,这个Class类就包含了所有你定义的Class信息,包括所有的方法(私有,公有).构造器.实现了那些方法.哪些注解信息.所有的属

Spring高级话题[email&#160;protected]***注解的工作原理

出自:http://blog.csdn.net/qq_26525215 @EnableAspectJAutoProxy @EnableAspectJAutoProxy注解 激活Aspect自动代理 <aop:aspectj-autoproxy/> 开启对AspectJ自动代理的支持. 在用到AOP的自动代理的时候用,如果你理解了Java的动态代理,很容易的就会熟悉AOP的自动代理的. @EnableAsync @EnableAsync注解开启异步方法的支持. 这个相信大家都比较熟悉的.对于异步