SpringBoot项目在启动的时候,会自动配置一些与项目相关的配置,实现这个功能是基于@SpringBootApplication注解,在@SpringBootApplication中包含了三个关键点,先看图
第一个:@SpringBootConfiguration注解,其主要的作用是使得我们这个注解标记的类是一个配置类,在springboot项目启动时候可以加载这个类中;
第二个:@EnableAutoConfiguration注解,它的作用是开启自动配置模式;自动配置的主要实现是通过这个注解里的另外一个注解@Import导入一种AutoConfigurationImportSelector.class自动配置导入选择器来实现;
如图所示,在AutoConfigurationImportSelector.class中主要是通过ImportCandidates.load这个API去加载AutoConfiguration.class文件;
而这个加载的文件其实最终找到的是我们AutoConfiguration.class中的《
META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports》这类文件,读取文件中的配置类的全类名,然后返回一个List类型的集合。
实现案例:阿里云OSS图片上传自动配置类的设计
第一步:创建一个父工程,这个父工程里不需要编写代码,只需要保留一个pom文件,进行依赖管理和组件管理,同时它需要继承与springboot的父组件,因为这个配置后面应用的时候还需要使用@Autowired功能,如图
第二步:创建一个子工程(configuration),继承上面的父工程,导入相关阿里云和spring依赖;
这个configuration的子工程里主要包含4个文件:
1.配置类文件
2.实体类文件
因为这个自动配置类完成后就等同于依赖,面对不同的项目,属性值是不同的,所以在这个类中就不配置yml文件。
3.阿里云图片上传处理代码
4.自动配置扫描的文件
根据以上几步,最后通过maven工具进行install,就可以在项目中进行应用。