springApplication中的注解
springApplication的run方法
其中springBootApplication它提供了快速配置Spring Boot应用程序的方式,减少了冗长和复杂的配置文件
run
而run这个静态方法他是整个启动程序的核心方法
springApplication
我们打开springBootApplication这个注解后就会看到@SpringBootConfiguration @EnableAutoConfiguration @ComponentScan这三个关键核心注解用于快速配置和运行Spring Boot应用程序
SpringBootConfiguration
这就是SpringBootConfiguration的源码信息,用于声明一个类为Spring Boot的配置类。而标起来的
@Target({ElementType.TYPE})
他表示这个注解适用于类、接口、枚举类等类型的声明
@Retention(RetentionPolicy.RUNTIME)
他表示这个注解将保留到运行时,可以通过反射机制读取这个注解的信息。
@Configuration
标识一个类是配置类
EnableAutoConfiguration
EnableAutoConfiguration用于启用自动配置机制,而@AutoConfigurationPackage这个注解用于自动配置应用程序的包
AutoConfigurationPackage
这里就是AutoConfigurationPackage的源码信息而import这个注解而括号里的方法是Spring Boot中用来注册自动配置包的一个类。它可以通过手动调用register()方法,将指定的类所在的包及其子包注册为自动配置包,方便自定义配置
ComponentScan
ComponentScan,用于指定需要扫描的组件(包括Bean、配置类等)所在的包路径。注解中的excludeFilters属性用于设置过滤器,用于排除特定类型的组件不被扫描和注册为Spring组件。源码如下
设置应用类型
这个非常重要,他决定项目的类型,应用类型分为三种,都在WebApplicationType
这个枚举类中
第一种:NONE 什么都没有,正常流程走
第二种:SERVLET 基于servlet
的web程序
第三种:REACTIVE 基于reactive
的web程序
设置初始化器(Initializer)
初始化器ApplicationContextInitializer
用于IOC
容器刷新之前初始化一些组件源码如下:
要获取初始化名在loadFactoryNames方法中那个set<String>中的string就是初始化器的名了,最终调用的是SpringFactoriesLoader.loadSpringFactories的方法
监听器
Spring框架中的事件机制是基于观察者模式实现的,即定义了一个事件源(ApplicationEventPublisher)和多个事件监听器(ApplicationListener),当事件源发布事件时,所有注册的事件监听器都会接收到该事件,并进行相应的处理
Spring Boot中常用的监听器包括:
-
ApplicationStartingEvent:应用程序启动前触发的事件,可以在此事件中做一些初始化操作。
-
ApplicationStartedEvent:应用程序启动完成时触发的事件,可以在此事件中进行一些后置处理。
-
ApplicationReadyEvent:应用程序已准备好接收请求时触发的事件,可以在此事件中做一些数据初始化操作。
-
ApplicationFailedEvent:应用程序启动失败时触发的事件,可以在此事件中进行异常处理。
总之,Spring Boot中的监听器是一种重要的组件,它可以监控应用程序的各种事件,如启动和关闭、请求到达和离开等,并做出相应的响应。监听器的使用可以将不同的功能模块解耦,使得系统更加灵活和可复
起步依赖
起步依赖(Starter Dependencies)是Spring Boot框架中的一个重要特性,它提供了一种简化项目构建和依赖管理的方式
在传统的Java项目中,我们通常需要手动添加各种第三方库和框架的依赖,而且版本管理也需要自行处理。这样的过程比较繁琐,并且容易发生版本冲突或者依赖不一致的问题。
而Spring Boot的起步依赖机制解决了这个问题。起步依赖是一个可插拔的依赖集合,其中包含了一组相关的依赖项,这些依赖项已经被事先配置和测试好了。使用起步依赖可以简化项目的依赖管理,只需要选择合适的起步依赖,就可以获得相关功能的所有必要依赖项,并且这些依赖项的版本之间是经过充分测试和兼容的。
起步依赖的好处
它简化了项目配置、版本管理和依赖冲突解决的过程,让开发者能更加专注于业务逻辑的开发而不用过多关注底层技术细节。
总结:
Spring Boot的起步依赖提供了一种简化项目构建和依赖管理的方式。通过选择合适的起步依赖,可以自动获取相关功能的所有必要依赖项,避免手动管理依赖造成的问题,提高开发效率。