J2EE注解

Java注解

Java中元注解有四个:@Retention、@Target、@Document、@Inherit

@Retention

作用:注解保留的位置

Retention注解有一个属性value,是RetentionPolicy类型的,RetentionPolicy有3个值:CLASS RUNTIME SOURCE,按生命周期来划分可分为3类:

1、RetentionPolicy.SOURCE:注解只保留在源文件,当Java文件编译成class文件的时候,注解被遗弃; 2、RetentionPolicy.CLASS:注解被保留到class文件,但jvm加载class文件时候被遗弃,这是默认的生命周期; 3、RetentionPolicy.RUNTIME:注解不仅被保存到class文件中,jvm加载class文件之后,仍然存在;

这3个生命周期分别对应于:Java源文件(.java文件) ---> .class文件 ---> 内存中的字节码。那怎么来选择合适的注解生命周期呢?

一般如果需要在运行时去动态获取注解信息,那只能用 RUNTIME 注解,比如@Deprecated使用RUNTIME注解;

如果要在编译时进行一些预处理操作,比如生成一些辅助代码(如 Lombok),就用 CLASS注解;

如果只是做一些检查性的操作,比如 @Override 和 @SuppressWarnings,使用SOURCE 注解。

@Target

作用:注解的作用目标

@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) ///包

@Document

作用:说明该注解将被包含在javadoc中

@Inherit

作用:说明子类可以继承父类中的该注解

@Override

作用在方法上,当我们想重写一个方法时,在方法上加@Override,当我们方法的名字出错时,编译器就会报错

@Deprecated

用来表示某个类或属性或方法已经过时,不想别人再用时,在属性和方法上用@Deprecated修饰

@SuppressWarnings

用来压制程序中出来的警告,比如在没有用泛型或是方法已经过时的时候

@Documented

给类方法添加注释

SpringBoot注解

@SpringBootApplication

Spring Boot应用标注在某个类上说明这个类是SpringBoot的主配置类,SpringBoot就应该运行这个类的main方法来启动SpringBoot应用

@SpringBootConfiguration

标注在某个类上,表示这是一个Spring Boot的配置类

@EnableAutoConfiguration

开启自动配置功能

@AutoConfigurationPackage

自动配置包

@Import(AutoConfigurationPackages.Registrar.class)

@Import是Spring底层的注解,负责将组件导入到容器中。org.springframework.boot.autoconfigure.AutoConfigurationPackages.Registrar将主配置类(@SpringBootApplication标注的类)的所在包及下面所有子包里面的所有组件扫描到Spring容器

@Import({EnableAutoConfigurationImportSelector.class})

EnableAutoConfigurationImportSelector将所有需要导入的组件以全类名的方式返回;这些组件就会被添加到容器中。

会给容器中导入非常多的自动配置类(xxxAutoConfiguration);就是给容器中导入这个场景需要的所有组件,并配置好这些组件;

Spring Boot在启动的时候从类路径下的META-INF/spring.factories中获取EnableAutoConfiguration指定的值,将这些值作为自动配置类导入到容器中,自动配置类就生效,帮我们进行自动配置工作;**以前我们需要自己配置的东西,自动配置类都帮我们;

J2EE的整体整合解决方案和自动配置都在spring-boot-autoconfigure-1.5.9.RELEASE.jar;

@ConditionalOnBean、@ConditionalOnMissBean、@Conditional

@ConditionalOnBean是依赖,@ConditionalOnMissBean是排斥,@Conditional为条件

 

原文地址:https://www.cnblogs.com/hucheng1997/p/11733430.html