SpringBootApplication注解含义,SpringBoot如何实现自动配置

 其中重要的是@EnableAutoConfiguraion

下面从元注解开始解释他们分别的含义

其中 @Target @Retention@Ducumented@Inherited四个注解为元注解,即注解的注解

@Target

表示该注解的作用范围。ElementType是个enum(枚举),内容如下

TYPE:接口、类、枚举
FIELD:字段、枚举的常量
METHOD:方法
PARAMETER:方法参数
CONSTRUCTOR:构造函数
LOCAL_VARIABLE:局部变量
ANNOTATION_TYPE:注解
PACKAGE:包

@Target({ElementType.TYPE})则表示该注解的作用范围为类、接口(包括注释类型)或枚举声明

@Retention

表示该注解的生命周期

SOURCE :只在我们敲代码的时候存在,javac进行编译时就消失。

例如:

@Override注解 

CLASS:

在javac编译成class文件时还存在,jvm进行加载时就会消失。默认形式

RUNTIME:

在运行时也保留的注解,始终不会消失。

 

@Ducumented

表示在 javadoc 工具为类生成帮助文档时保留其注解信息

即javadoc -d doc {类名}.java操作生成帮助文档时,保留该注解。

@Inherited

表示被该注解表示的类,其子类自动包含该注解。

@SpringBootConfiguration

和Spring中@configuration几乎没有区别

唯一的区别在于他多了一个@indexed注解

的作用是在当@ComponentScan扫描的类很多的时候,Spring启动时模式注释解析的时间会变得很长。为解决这问题在Spring Boot2.0底层核心框架Spring Framework5.0中引入了该注解,为Spring模式注释解析添加索引,以提升启动的性能。

@EnableAutoConfiguraion

先从@AutoConfigurationPackage 开始看

 点开@AutoConfigurationPackage

先通过@ComponentScan 扫描再通过@AutoConfigurationPackage 进行注册

核心 @Import({AutoConfigurationImportSelector.class})

刚刚已经进行了扫描和注册,现在需要进行加载这些配置了。

在SpringBoot2.2版本中

所有的自动配置文件都在spring-boot-autoconfigure里面的META-INF的spring.factories文件里面

里面是全部的配置文件,那么他如何进行选择的呢?

 其中有个核心注解@ConditionalXXX 该条件满足 即加载

简单来说,按需加载,根据我们pom文件中的dependency,进行选择性加载。

谈谈SpringBoot中run的方法

SpringApplication做了啥事情

1.判断这个项目是普通还是web项目。

tip:①.普通项目启动完就结束,web项目会一直启动

       ②.在SSM框架中,打的是war包,再放到tomcat中启动;在springboot项目会内嵌tomcat,默认打的是jar包,也可以在pom文件中去掉内嵌的tomcat,然后打war包放tomcat中启动。

       ③.jar包启动方式是 java -jar XXX.jar 

2.查找并加载所有的初始化器。

3.查找并加载所有的程序的监听器。

4.推断并设置当前的主类(即main方法的定义类)。

5.全面接管SpringMVC的自动装配。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Coca可口

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值