1、你是怎么理解SpringBoot的?
SpringBoot是一个用来简化Spring应用创建,开发和运行的框架。
SpringBoot核心特性有
创建独立的Spring应用程序
内置Tomcat,Jetty,Undertow(无需部署war文件)
提供starter简化配置
尽量进行Spring和第三方库的自动化配置
提供生产就绪功能,例如指标,健康检查和外部化配置。
完全无需代码生成,无序xml配置
2、SpringBoot自动装配原理【重要】
Spring Boot的自动装配实际上是从META-INF/spring.factories
文件中获取到对应的需要进行自动装配的类,并生成相应的Bean对象,然后将它们交给Spring容器进行管理
在Spring Boot项目中有一个注解@SpringBootApplication,这个注解是对三个注解进行了封装:@SpringBootConfiguration、@EnableAutoConfiguration、@ComponentScan
其中@EnableAutoConfiguration是实现自动化配置的核心注解。
该注解通过@Import注解导入AutoConfigurationImportSelector,这个类实现了一个导入器接口ImportSelector。在该接口中存在一个方法selectImports,
该方法的返回值是一个数组,数组中存储的就是要被导入到spring容器中的类的全类名。在AutoConfigurationImportSelector类中重写了这个方法,
该方法内部就是读取了项目的classpath路径下META-INF/spring.factories文件中的所配置的类的全类名。
在这些配置类中所定义的Bean会根据条件注解所指定的条件来决定是否需要将其导入到Spring容器中。
3、SpringBoot如何自定义Starter【重要】
首先创建一个starter工程(start结构类似于SpringBoot项目结构),pom文件导入相关依赖,自己编写自定义starter的java配置(编写功能模块)
在这个类上面编写一个Configuration注解表明是个配置类,我们还会去编写一个ConditionalOnClass,去检测我们是否导入相应的jar,如果有,自动装配就会生效。该类实现的功能会以配置组件的形式加入IOC容器中,方便被扫描。
在项目下创建一个MENT-INF文件夹,并在该文件夹下创建spring.factories文件,保证我们所自定义的配置类加入候选配置中(自己写的自动装配的类配置到spring.factories文件中)
打包部署到仓库里
springboot工程中直接引入打好包的依赖,直接使用。
4、SpringBoot核心
自动装配
它可以让应用程序快速便捷地进行配置,无需手工编写配置文件。在启动应用程序时,Spring Boot会自动加载已经定义好的配置文件(例如application.properties)
起步依赖
提供各种常用的依赖库,根据自己的需求自动导入依赖,能够快速构建应用程序并且直接使用。
@SpringBootApplication
@SpringBootApplication:目的是开启自动配置,并表示该类为主启动类。
@EnableAutoConfiguration:启用springboot自动配置,自动所有扫描classpath目录下面所有jar中的spring.factories文件实现配置类批量注册
@AutoConfigurationPackage:添加该注解的类所在的package 作为 自动配置package 进行管理
@Import(AutoConfigurationImportSelector.class):将spring.factories里面的key为EnableAutoConfiguration对应的值导入spring容器中,满足条件的的才导入
@SpringBootConfiguration:标志该类为springboot配置类
run方法
根据应用类型,创建spring容器
启动web容器
评论区