总结:Spring Boot 之spring.factories
一、介绍
Spring IOC会将所有的对象交由Spring管理,扫描对象是在Spring boot的路径下的所有配置类注解,需要管理的对象。
但是:如果这些Bean路径不在Spring Boot的包扫描路径下,怎么办?这样不就实例化不了了吗?
有两种方式解决这个问题:
方式一:通过在启动类中加上@Import 注解,以 SwaggerConfig 为例。
@Configuration
@EnableSwagger2
public class SwaggerConfig implements EnvironmentAware {private static final Logger log = LoggerFactory.getLogger(SwaggerConfig.class);@Autowiredprivate Environment env;@Value("${swagger.scan.package}")private String swaggerScanPackage;public SwaggerConfig() {}@Beanpublic Docket createRestApi() {Predicate<String> path = PathSelectors.any();if (Arrays.asList(this.env.getActiveProfiles()).contains("prod")) {path = PathSelectors.none();}return (new Docket(DocumentationType.SWAGGER_2)).apiInfo(this.apiInfo()).select().apis(RequestHandlerSelectors.basePackage(this.swaggerScanPackage)).paths(PathSelectors.any()).build();}private ApiInfo apiInfo() {return (new ApiInfoBuilder()).title("APIs").description("…………").termsOfServiceUrl("https://js.dazhi.loan.com").version("1.0").build();}@Overridepublic void setEnvironment(Environment environment) {}
}
启动类上加上@Import 注解,如下:
但是有个问题,当这类配置比较多的时候,启动类会很繁琐。
方式二:使用spring.factories
采用spring.factories 的方式去加载SwaggerConfig类,在resources目录下新建一个META-INF 的目录,然后在
新建一个spring.factories 的文件,里面的内容为:
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
com.sg.config.SwaggerConfig
这样也可以加载到 SwaggerConfig。
二、spring.factories加载使用
Spring boot使用SpringFactoriesLoader来加载spring.factories。
可通过Spring boot启动源码的获取监听器方法查看。
根据对下面代码的追踪可知,最终是通过读取META-INF/spring.factories读取里面的监听器类然后做响应的操作。
SpringApplicationRunListeners listeners = getRunListeners(args);
总结:Spring Boot 之spring.factories相关推荐
- 二、何为Spring Boot整合Spring Cloud?
题语:学习方法之多思考:正向.逆向.跳跃 作者:A哥(YourBatman) wx号:fsx641385712(备注"Java群"字样) 公众号:BAT的乌托邦(ID:BAT-ut ...
- spring boot整合spring security笔记
最近自己做了一个小项目,正在进行springboot和spring Security的整合,有一丢丢的感悟,在这里分享一下: 首先,spring boot整合spring security最好是使用T ...
- Spring Boot(Spring的自动整合框架)
2019独角兽企业重金招聘Python工程师标准>>> Spring Boot 是一套基于Spring框架的微服务框架,由于Spring是一个轻量级的企业开发框架,主要功能就是用于整 ...
- 为什么Java大神,都在看Spring Boot和Spring Cloud的书?
2019独角兽企业重金招聘Python工程师标准>>> 如果你是一名Java开发人员,并且最近正打算学习Spring Boot和Spring Cloud框架并寻找一些关于它们的最好的 ...
- Spring干货汇总(含Spring Boot与Spring Cloud)
周末抽空对本号推送的Spring相关内容做个汇总整理(包括spring boot.spring cloud等),方便大家查阅. Spring Boot专题 基础入门内容 SpringBoot快速入门 ...
- Spring Boot 入门——Spring Boot 简介||微服务简介
Spring Boot 入门 1.Spring Boot 简介 Spring Boot来简化Spring应用开发,约定大于配置, 去繁从简,just run就能创建一个独立的,产品级别的应用 简化Sp ...
- 基于Spring Boot和Spring Cloud实现微服务架构学习--转
原文地址:http://blog.csdn.net/enweitech/article/details/52582918 看了几周spring相关框架的书籍和官方demo,是时候开始总结下这中间的学习 ...
- 基于 Spring Boot 和 Spring Cloud 实现微服务架构
前言 首先,最想说的是,当你要学习一套最新的技术时,官网的英文文档是学习的最佳渠道.因为网上流传的多数资料是官网翻译而来,很多描述的重点也都偏向于作者自身碰到的问题,这样就很容易让你理解和操作出现偏差 ...
- Spring Boot、Spring Cloud、Spring Cloud Alibaba版本关系查询
Spring Boot与Spring Cloud 查询接口:https://start.spring.io/actuator/info 结果如下: Spring Cloud Alibaba对应版本 官 ...
- springboot整合hibernate_峰哥说技术系列-17 .Spring Boot 整合 Spring Data JPA
今日份主题 Spring Boot 整合 Spring Data JPA JPA(Java Persistence API)是用于对象持久化的 API,是Java EE 5.0 平台标准的 ORM 规 ...
最新文章
- 软件工程——视频总结
- Radware:2016年攻击趋势
- java servletconfig_ServletConfig中的方法
- (转)分布式锁的几种使用方式(redis、zookeeper、数据库)
- Python命令行参数
- L1-068 调和平均 (10 分)-PAT 团体程序设计天梯赛 GPLT
- 哪些东西影响计算机运行速度,影响电脑运行速度的因素主要的哪些?
- 剑指 Offer 64. 求1+2+…+n(面试题中的短路与)
- 关于js里的那一堆事件
- python不用sort排序_Python排序方法sort、sorted的key参数的作用
- 如何利用python整合excel_一篇文章告诉你如何利用python实施自动化办公,操作Excel...
- android qq 登陆 简书,第三方登录 — QQ登录
- SpringBoot调优
- Unity 3D游戏-塔防类游戏源码:重要方法和功能的实现
- VS2010:X64和X86冲突问题
- 小学三年级另类语文题难住大学副教授(图)
- 芒果改进YOLOv7系列:超越ConvNeXt结构,原创结合Conv2Former改进结构,Transformer 风格的卷积网络视觉基线模型,高效涨点
- Zabbix简单检查的使用
- failed to connect to ‘192.168.*.*:5555‘: Connection refused
- linux 移动硬盘 machine,MacBook使用一块移动硬盘做Win To Go及Time Machine备份
热门文章
- 任务调度系统--核心概念
- 中公教育计算机老师笔试面试题,信息技术教师考试面试“答辩”技巧
- xftp传输文件失败的解决方法
- python安装失败0x80070570_win7系统出现windows无法安装错误代码0x80070570的解决方法...
- hdu 3498 whosyourdaddy (重复覆盖,DLX+迭代加深A*)
- 00后羡慕疯的网红“神仙公司”,其实是编的
- 51nod大鱼吃小鱼
- CSS常用代码片段-01
- python3 ride
- oppo手机隐藏的计算机冷知识,OPPO手机的四个隐藏小技巧, 你会用几个?