在我们平时的Springboot应用程序开发中,我们经常把我们需要的starter引入,这样程序启动时就会把这个starter的相关功能自动配置到spring的应用程序容器中 ,可以极大地简化我们的Spring应用程序开发和配置过程。
比如spring-boot-starter-web这个starter我们应该都很熟悉,通过引入这个starter我们程序就已经有了web服务器、springmvc等基本能力; 相较于传统的非springboot的web开发免去了引入相关依赖并编写众多配置文件的令人头疼的过程。
SPI(Service Provider Interface),springboot的一种服务发现机制规范。具体实现形式是通过在项目resources里添加的spring.factories文件来指定 需要扫描的配置类去初始化到容器里。
SpringApplication.run(YeeeAppBootstrapApplication.class, args);
refreshContext(ConfigurableApplicationContext context)
...
invokeBeanFactoryPostProcessors(beanFactory);
...
// 读取spring.factories文件中以EnableAutoConfiguration类标识的所有需要扫码的配置类
List<String> configurations = SpringFactoriesLoader.loadFactoryNames(EnableAutoConfiguration.class);
...
// 注册到BeanFactory的beanDefinitionNames中
processConfigBeanDefinitions(BeanDefinitionRegistry registry)
...
finishBeanFactoryInitialization(beanFactory);
在我们项目开发中swagger显然已经必不可少,在没有构建公共的starter后,我们每次使用swagger都需要引入许多依赖并且 还得写一些额外的配置类来初始化它;在封装成starter后我们只需要在pom中引入这个starter并且不需要额外配置就可以拥有这个功能。
项目结构
配置类
@ComponentScan({"vip.yeee.memo.base.swagger.config", "springfox.documentation.schema"})
public class SwaggerAutoConfigure {
public SwaggerAutoConfigure() {
log.info("自动配置-swagger");
}
}
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
vip.yeee.memo.base.swagger.SwaggerAutoConfigure
<dependency>
<groupId>vip.yeee.memo</groupId>
<artifactId>base-swagger</artifactId>
</dependency>
// 1.自定义starter项目
https://github.com/yeeevip/yeee-memo/tree/master/memo-parent/memo-base/base-swagger
版权 本文为yeee.vip原创文章,转载无需和我联系,但请注明来自https://www.yeee.vip
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。