Java注解总结

注解

作用
  1. 用来检查某些限定,比如 override
  2. 打上标记,配合反射机制,获取注解上设定的某些值,用来做某些指定的事情
ElementType 与 RetentionPolicy

ElementType: 指定了一个annotation可以用来修饰哪种类型的类。

RetentionPolicy : 指明该annotation能够最多能够存在于哪个阶段,比如只能存在于 源码中,字节码中就已经不在了。

package java.lang.annotation;
public enum ElementType {
    TYPE,               /* 类、接口(包括注释类型)或枚举声明  */

    FIELD,              /* 字段声明(包括枚举常量)  */

    METHOD,             /* 方法声明  */

    PARAMETER,          /* 参数声明  */

    CONSTRUCTOR,        /* 构造方法声明  */

    LOCAL_VARIABLE,     /* 局部变量声明  */

    ANNOTATION_TYPE,    /* 注释类型声明  */

    PACKAGE             /* 包声明  */
}
package java.lang.annotation;
public enum RetentionPolicy {
    SOURCE,            /* Annotation信息仅存在于编译器处理期间,编译器处理完之后就没有该Annotation信息了  */

    CLASS,             /* 编译器将Annotation存储于类对应的.class文件中。默认行为  */

    RUNTIME            /* 编译器将Annotation存储于class文件中,并且可由JVM读入 */
}
元注解
  • @Retention - 标识这个注解怎么保存,是只在代码中,还是编入class文件中,或者是在运行时可以通过反射访问。***(与 RetentionPolicy有关)***
  • @Documented - 标记这些注解是否包含在用户文档中。
  • @Target - 标记这个注解应该是哪种 Java 成员。***(与 ElementType 有关)***
  • @Inherited - 标记的注解Annotation在使用在一个Base类上面后,该Base类的子类Sub类也同时具有该Annotation
示例

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9i7hYYNO-1602172126018)(C:\Users\Administrator.RORA5V8714TO6NE\AppData\Roaming\Typora\typora-user-images\image-20201001171214958.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6SuZXn6h-1602172126022)(C:\Users\Administrator.RORA5V8714TO6NE\AppData\Roaming\Typora\typora-user-images\image-20201001171251044.png)]

在Spring中的应用

以 SpringMVC 的框架为例,其中分为三层,Controller、Service、Dao层。

@Service(“ClassName”),该注解打在Service层的类上,并且“ClassName”为该类的全限定名,首字母小写。

@Resource(name="…") 或者 @Autowired 两个注解用在Controller 层的 service成员变量上,那么spring就可以给该成员变量对象注入一个实例。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Rqa4H05U-1602172126025)(C:\Users\Administrator.RORA5V8714TO6NE\AppData\Roaming\Typora\typora-user-images\image-20201001171812445.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-N7iO9RrK-1602172126039)(C:\Users\Administrator.RORA5V8714TO6NE\AppData\Roaming\Typora\typora-user-images\image-20201001171907351.png)]

在 Spring 框架启动后,能够根据Service类的class创建一个实例对象,在对Controller类的class进行分析后,能够提取到其中成员变量的的注解信息,根据注解信息就可以与创建的实例对象关联起来了,那么就可以 类对象的自动创建与注入。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值