一、介绍

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相关推荐

  1. 二、何为Spring Boot整合Spring Cloud?

    题语:学习方法之多思考:正向.逆向.跳跃 作者:A哥(YourBatman) wx号:fsx641385712(备注"Java群"字样) 公众号:BAT的乌托邦(ID:BAT-ut ...

  2. spring boot整合spring security笔记

    最近自己做了一个小项目,正在进行springboot和spring Security的整合,有一丢丢的感悟,在这里分享一下: 首先,spring boot整合spring security最好是使用T ...

  3. Spring Boot(Spring的自动整合框架)

    2019独角兽企业重金招聘Python工程师标准>>> Spring Boot 是一套基于Spring框架的微服务框架,由于Spring是一个轻量级的企业开发框架,主要功能就是用于整 ...

  4. 为什么Java大神,都在看Spring Boot和Spring Cloud的书?

    2019独角兽企业重金招聘Python工程师标准>>> 如果你是一名Java开发人员,并且最近正打算学习Spring Boot和Spring Cloud框架并寻找一些关于它们的最好的 ...

  5. Spring干货汇总(含Spring Boot与Spring Cloud)

    周末抽空对本号推送的Spring相关内容做个汇总整理(包括spring boot.spring cloud等),方便大家查阅. Spring Boot专题 基础入门内容 SpringBoot快速入门 ...

  6. Spring Boot 入门——Spring Boot 简介||微服务简介

    Spring Boot 入门 1.Spring Boot 简介 Spring Boot来简化Spring应用开发,约定大于配置, 去繁从简,just run就能创建一个独立的,产品级别的应用 简化Sp ...

  7. 基于Spring Boot和Spring Cloud实现微服务架构学习--转

    原文地址:http://blog.csdn.net/enweitech/article/details/52582918 看了几周spring相关框架的书籍和官方demo,是时候开始总结下这中间的学习 ...

  8. 基于 Spring Boot 和 Spring Cloud 实现微服务架构

    前言 首先,最想说的是,当你要学习一套最新的技术时,官网的英文文档是学习的最佳渠道.因为网上流传的多数资料是官网翻译而来,很多描述的重点也都偏向于作者自身碰到的问题,这样就很容易让你理解和操作出现偏差 ...

  9. Spring Boot、Spring Cloud、Spring Cloud Alibaba版本关系查询

    Spring Boot与Spring Cloud 查询接口:https://start.spring.io/actuator/info 结果如下: Spring Cloud Alibaba对应版本 官 ...

  10. springboot整合hibernate_峰哥说技术系列-17 .Spring Boot 整合 Spring Data JPA

    今日份主题 Spring Boot 整合 Spring Data JPA JPA(Java Persistence API)是用于对象持久化的 API,是Java EE 5.0 平台标准的 ORM 规 ...

最新文章

  1. 软件工程——视频总结
  2. Radware:2016年攻击趋势
  3. java servletconfig_ServletConfig中的方法
  4. (转)分布式锁的几种使用方式(redis、zookeeper、数据库)
  5. Python命令行参数
  6. L1-068 调和平均 (10 分)-PAT 团体程序设计天梯赛 GPLT
  7. 哪些东西影响计算机运行速度,影响电脑运行速度的因素主要的哪些?
  8. 剑指 Offer 64. 求1+2+…+n(面试题中的短路与)
  9. 关于js里的那一堆事件
  10. python不用sort排序_Python排序方法sort、sorted的key参数的作用
  11. 如何利用python整合excel_一篇文章告诉你如何利用python实施自动化办公,操作Excel...
  12. android qq 登陆 简书,第三方登录 — QQ登录
  13. SpringBoot调优
  14. Unity 3D游戏-塔防类游戏源码:重要方法和功能的实现
  15. VS2010:X64和X86冲突问题
  16. 小学三年级另类语文题难住大学副教授(图)
  17. 芒果改进YOLOv7系列:超越ConvNeXt结构,原创结合Conv2Former改进结构,Transformer 风格的卷积网络视觉基线模型,高效涨点
  18. Zabbix简单检查的使用
  19. failed to connect to ‘192.168.*.*:5555‘: Connection refused
  20. linux 移动硬盘 machine,MacBook使用一块移动硬盘做Win To Go及Time Machine备份

热门文章

  1. 任务调度系统--核心概念
  2. 中公教育计算机老师笔试面试题,信息技术教师考试面试“答辩”技巧
  3. xftp传输文件失败的解决方法
  4. python安装失败0x80070570_win7系统出现windows无法安装错误代码0x80070570的解决方法...
  5. hdu 3498 whosyourdaddy (重复覆盖,DLX+迭代加深A*)
  6. 00后羡慕疯的网红“神仙公司”,其实是编的
  7. 51nod大鱼吃小鱼
  8. CSS常用代码片段-01
  9. python3 ride
  10. oppo手机隐藏的计算机冷知识,OPPO手机的四个隐藏小技巧, 你会用几个?