Spring Boot工作机制简介
一、@SpringBootApplication
我们新建一个springboot项目里面会有一个SpringbootDay1203Application类
我们都知道@SpringBootApplication是Springboot项目的核心注解,没有这个注解不能成为springboot项目。
你知道吗?-----@SpringBootApplication注解是一个复合注解。我们看一下官方文档上怎么说的
构成:@SpringBootApplication=@SpringBootConfiguration
+@EnableAutoConfiguration
+@ComponentScan
我们看一下@SpringBootApplication该注解的源代码(果然没错)
其他的注解我们下面稍稍解释一下,注重讲解这个3合1注解
@SpringBootConfiguration: @Configuration的作用一样,为了提醒IOC容器这是一个Spring Boot配置类。
(通俗讲:通知IOC有springboot来了,该工作了!)
@EnableAutoConfiguration:开启自动配置功能
将所有的符合自动配置Bean加载到当前Spring Boot创建并使用IOC容器中去。
(通俗讲:工作前的准备)
@ComponentScan:告诉IOC去包扫描
用于自动扫描和加载符合项目条件的组件或者Bean,且将Bean加载到IOC容器中去。
(通俗讲:工作吧)
@Target:指明了修饰的这个注解的使用范围,即被描述的注解可以用在哪里。
ElementType的取值包含以下几种:
TYPE:类,接口或者枚举
FIELD:域,包含枚举常量
METHOD:方法
PARAMETER:参数
CONSTRUCTOR:构造方法
LOCAL_VARIABLE:局部变量
ANNOTATION_TYPE:注解类型
PACKAGE:包
@Retention:指明修饰的注解的生存周期,即会保留到哪个阶段。
RetentionPolicy的取值包含以下三种:
SOURCE:源码级别保留,编译后即丢弃。
CLASS:编译级别保留,编译后的class文件中存在,在jvm运行时丢弃,这是默认值。
RUNTIME: 运行级别保留,编译后的class文件中存在,在jvm运行时保留,可以被反射调用。
@Documented:该注解标示注释是由 javadoc记录的, 那么咱们就可以利用javadoc来生成API。
@Inherited:允许子类继承父类的注解。
这个注解我们通过源码看一下(稍微了解一下)
可以看出是一个接口类。