「spring」Spring面试题:SpringBoot开发自定义starter


「spring」Spring面试题:SpringBoot开发自定义starter
文章图片
「spring」Spring面试题:SpringBoot开发自定义starter
文章图片
「spring」Spring面试题:SpringBoot开发自定义starter
文章图片
「spring」Spring面试题:SpringBoot开发自定义starter
文章图片
「spring」Spring面试题:SpringBoot开发自定义starter
文章图片
「spring」Spring面试题:SpringBoot开发自定义starter
文章图片
「spring」Spring面试题:SpringBoot开发自定义starter

Spring面试题:SpringBoot开发自定义starter
什么是starterStarter可以理解为一个可拔插式的插件 , 提供一系列便利的依赖描述符 , 您可以获得所需的所有Spring和相关技术的一站式服务 。 应用程序只需要在maven中引入starter依赖 , SpringBoot就能自动扫描到要加载的信息并启动相应的默认配置 。 用一句话描述 , 就是springboot的场景启动器 。
下面是Spring官方提供的部分starter , 全部的请参考官网:
官方starter
开始自定义starter前看看Springboot的AutoConfiguration机制 。
Spring boot的AutoConfiguration机制标记一个应用为Springboot应用 , 需要一个SpringBootApplication注解 , 下面是一个标准的spring boot启动程序 。
SpringBootApplication
SpringBootApplication注解又被一个EnableAutoConfiguration注解 , EnableAutoConfiguration注解就是自动加载配置的关键 。
SpringBootApplication注解
EnableAutoConfiguration是一个组合注解 , 用Import把AutoConfigurationImportSelector导入容器中 , springboot启动的时候会加载所有的selector并执行selectImports方法 , 这个方法会加载META-INF/spring.factories中配置的EnableAutoConfiguration , 从而加载自动配置 。
EnableAutoConfiguration
自定义Starter1、创建一个工程id-spring-boot-starter , 在pom文件中添加以下依赖 , 我们自定义的starter一般以xxx-spring-boot_starter命名 。
添加依赖
2、定义一个映射配置新的的类IDProperties , 添加注解ConfigurationProperties(prefix = \"id\") , 我们的配置文件以id开头 , 比如id.mathine-id=110
IDProperties
3、创建一个服务IDService , 构造函数接收IDProperties , 具体代码
IDService
4、创建Configuration类IDConfiguration , 添加注解Configuration和EnableConfigurationProperties , 把当前类设置成配置类 , 并且注入IDProperties 。
IDConfiguration
5、重要的一步 , 在resources目录下创建META-INF目录 , 并添加文件spring.factories 。 在这个文件中配置EnableAutoConfiguration , 具体如下:
org.springframework.boot.autoconfigure.EnableAutoConfiguration=com.example.idspringbootstarter.IDConfiguration
测试自定义的Starter1、创建一个模块 , 添加刚才开发好的依赖