注解

1.0注解 Annotation

@Override告诉编译器这个方法是覆盖父类的方法

@WebServlet("test")表示某个类是一个Servlet,web容器就会识别这个注解,在运行的时候调用它。

@Controller("test")表示某个类是一个控制器,告诉Spring框架该类是一个控制器。

注解和注释是完全不同的两个东西,看起来有点类似,其实完全不同,注解会影响程序的运行。

注释是给开发人员看的,不会影响程序的编译和运行。注解并不是给开发人员看的,是用于给程序看的,会影响程序的编译和运行,编译器,tomcat,框架。

1.1.注解的作用范围

自定义开发一个web容器,基本功能是加载Servlet,需要管理它的生命周期,所以必须先识别程序中的哪些类是Servlet。

程序启动的时候,扫描所有的类,找出添加了@WebServlet注解的类,进行加载。

@WebServlet是在程序运行的时候起作用的,java就把它的作用范围规定为RUNTIME。

@Override是给编译器看的,编译器工作的时候识别出包含了@Override注解的方法,就去检查它上层父类的相应方法,存在则通过,负责报错。

@Override是编译时候起作用,java就把它的作用范围规定为SOURCE。

@Test

1.2@Target指定注解针对的地方

ElementType:

ElementType.TYPE 针对类、接口

ElementType.FIELID 针对成员变量

ElementType.METHOD 针对成员方法

ElementType.PARAMETER 针对方法参数

ElementType.CONSTRUCRTOR 针对构造器

ElementType.PACKAGE 针对包

ElementType.ANNOTATION_TYPE 针对注解

1.3@Retention指定注解的保留域

RetentionPolicy:

RetentionPolicy.SOURCE 源代码级别,由编译器进行处理,处理后就不再保留

RetentionPolicy.CLASS 注解信息保留到类对应的class文件中

RetentionPolicy.SOURCE 由JVM读取,运行时使用

1.4自定义注解

@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface InitMethod {
    
}
posted @ 2021-10-22 11:07  rainbring  阅读(266)  评论(0)    收藏  举报