Spring注解(Annotation)

文章目录

  • 前言
  • 一、Java注解分类
  • 二、注解中是否有成员变量的区别
  • 总结


前言

Java注解是附加在代码中的一些元信息,用于一些工具在编译、运行时进行解析和使用,起到说明、配置的功能

一、Java注解分类

1.jdk基本注解

        1.1  @Override //重写

        1.2  @Deprecated //已过时

        1.3  @SuppressWarnings(value = "unchecked") //压制编辑器警告

2.jdk元注解

        元注解:用于修饰其他的注解(纪委:管干部的干部)

        2.1 @Retention:定义注解的保存策略             

 @Retention(RetentionPolicy.SOURCE)   //注解仅存在于源码中,在class字节码文件中不包含。

 @Retention(RetentionPolicy.CLASS)       //默认的保留策略,注解会在class字节码文件中存在,但运行时无法获得。

 @Retention(RetentionPolicy.RUNTIME)   //注解会在class字节码文件中存在,在运行时可以通过反射获取到。

        2.2 @Target:指定被修饰的Annotation可以放置的位置(被修饰的目标) 
             

@Target(ElementType.TYPE)                      //接口、类

@Target(ElementType.FIELD)                      //属性

@Target(ElementType.METHOD)                 //方法

@Target(ElementType.PARAMETER)          //方法参数

@Target(ElementType.CONSTRUCTOR)               //构造函数

@Target(ElementType.LOCAL_VARIABLE)            //局部变量

@Target(ElementType.ANNOTATION_TYPE)           //注解

@Target(ElementType.PACKAGE)                   //包 

        注:可以指定多个位置,例如

        @Target({ElementType.METHOD, ElementType.TYPE}),也就是次注解可以在方法和类上使用

        2.3         @Inherited:指定被修饰的Annotation将具有继承性

        2.4         @Documented:指定被修饰的该Annotation可以被javadoc工具提取成文档

3.自定义注解

使用@interface关键字, 其定义过程与定义接口非常类似, 需要注意的是:
   Annotation的成员变量在Annotation定义中是以无参的方法形式来声明的, 其方法名和返回值类型定义了该成员变量的名字和类型, 
   而且我们还可以使用default关键字为这个成员变量设定默认值,例如:
   
   

@Inherited

@Retention(RetentionPolicy.RUNTIME)
   
@Target({ElementType.METHOD, ElementType.TYPE})
   
public @interface Tag {

     String name() default "该叫啥才好呢?";


     String description() default "这家伙很懒, 啥也没留下...";
}

   注:只有名字为“value”属性,赋值时可以省略属性名,例如:Springmvc的@RequestMapping

  1. @Target({ElementType.METHOD, ElementType.TYPE})
    
    @Retention(RetentionPolicy.RUNTIME)
    
    @Documented
    
    @Mapping
    
    public @interface RequestMapping {
    
        String name() default "";
    
        String[] value() default {};
    
        String[] path() default {};
    
        RequestMethod[] method() default {};
    
        String[] params() default {};
    
        String[] headers() default {};
    
        String[] consumes() default {};
    
        String[] produces() default {};
    
    }

可以写成@RequestMapping("/test")

二、注解中是否有成员变量的区别

1.标记Annotation: 

没有成员变量的Annotation; 这种Annotation仅利用自身的存在与否来提供信息

2.元数据Annotation: 

包含成员变量的Annotation; 它们可以接受(和提供)更多的元数据;


总结

        如有纰漏,请指正,互相进步。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值