00 SpringBoot学习之java注解开发

前言

最近打算写自己关于SpringBoot一套完整学习过程,但是SpringBoot里面用到过很多注解,所以在写SpringBoot笔记前,先唠唠java注解开发,本人也是最近才准备开始记录,如有什么没写对的地方望各位大佬指正,咳咳…接下来就是正文。

1. Java注解(Annotation)

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

注解相关类都包含在java.lang.annotation包中。

2. Java注解分类

2.1 JDK基本注解
2.2 JDK元注解
2.3 自定义注解
(另外注解也可以按照是否包含成员变量来分类,可以分为两类 有成员变量的叫1、标记Annotation 没有成员变量的叫元数据Annotation,后者可以接受(和提供)更多的元数据)

2.1 JDK基本注解

  @Override   重写
  @Deprecated  已过时 
  @SuppressWarnings(value = "unchecked") 
  压制编辑器警告

2.2 JDK元注解

元注解用于修饰其他的注解(理解:就是管理注解的注解 例子:纪委:管干部的干部)
4.1 @Retention:定义注解的保留策略
@Retention(RetentionPolicy.SOURCE) //注解仅存在于源码中,在class字节码文件中不包含
@Retention(RetentionPolicy.CLASS) //默认的保留策略,注解会在class字节码文件中存在,但运行时无法获得,
@Retention(RetentionPolicy.RUNTIME) //注解会在class字节码文件中存在,在运行时可以通过反射获取到

4.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}),也就是此注解可以在方法和类上面使用

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

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

2.3 自定义注解

	自定义注解开发
使用@interface关键字, 其定义过程与定义接口非常类似, 需要注意的是:

Annotation的成员变量在Annotation定义中是以无参的方法形式来声明的, 其方法名和返回值类型定义了 该成员变量的名字和类型,
而且我们还可以使用default关键字为这个成员变量设定默认值,如下demo:
@Inherited \\可继承的
@Retention(RetentionPolicy.RUNTIME) \\在虚拟机运行
@Target({ElementType.METHOD, ElementType.TYPE}) \\ 方法、 接口、类
public @interface Tag {

 String name() default "该叫啥才好呢?";
 String description() default "这家伙很懒, 啥也没留下...";
 Integer value();

}

注1:只有名字为“value”属性,当只赋值value属性时,赋值时可以省略属性名,如还有其他属性也要赋值则都不能省略属性名。

另外springboot中有以下常用注解

@Service用于标注业务层组件

@Controller用于标注控制层组件(如struts中的action)

@Repository用于标注数据访问组件,即DAO组件

@Component泛指组件,当组件不好归类的时候,我们可以使用这个注解进行标注。

@Aspect//切面

@Pointcut//定义需要切面的地方,表达式参数(https://blog.csdn.net/elim168/article/details/78150438)

@annotation//当执行的方法上拥有指定的注解时生效。

已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 深蓝海洋 设计师:CSDN官方博客 返回首页