首先抛出一个问题:如果想要被Spring容器管理的Bean的路径不再Spring Boot 的包扫描路径下,怎么办呢?也就是如何去加载第三方的Bean 呢?

有两种方式可以解决:
这里我们使用Swagger的配置来做实验。
1:首先一个Swagger的配置类:SwaggerConfig
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();}log.info("####初始化createRestApi####swaggerScanPackage:" + this.swaggerScanPackage);log.info(path.toString());return (new Docket(DocumentationType.SWAGGER_2)).apiInfo(this.apiInfo()).select().apis(RequestHandlerSelectors.basePackage(this.swaggerScanPackage)).paths(PathSelectors.any()).build();}private ApiInfo apiInfo() {log.info("##################################初始化API信息################################################");return (new ApiInfoBuilder()).title("APIs").description("…………").termsOfServiceUrl("https://js.dazhi.loan.com").version("1.0").build();}@Overridepublic void setEnvironment(Environment environment) {}
}

2:再看我的工程结构吧:

发现我的SwaggerConfig 类和 SpringBoot 的启动类ConfigApplication.java 不在同一级目录下,所以当Spring Boot 自动扫描包的时候,是扫描不到我的SwaggerConfig 的配置的,也就在控制台没有Swagger的打印的信息:

所以这时候我如果想要把SwaggerConfig 加载到Spring容器中的话 要怎么办呢?下面介绍两种方式
①:在Spring Boot Application 主类上 使用@Import 注解

启动就可以看到Swagger的基础信息:

②:现在我们将其改造一下,采用spring.factories 的方式去加载SwaggerConfig类,在resources目录下新建一个META-INF 的目录,然后在
新建一个spring.factories 的文件,里面的内容为:

登录后复制

org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
com.sg.config.SwaggerConfig

然后在把Spring Boot 启动类上的@Import注释掉,启动发现也可以把SwaggerConfig加载到Spring 容器中

到这就完成了加载一个Spring 不能扫描到的一个类,他可以是第三方的,也可以是自己写的,只要是Spring Boot 默认扫描路径不能够扫描到,都可以使用这种方式去加载!!!

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. 深度学习算法实践(基于Theano和TensorFlow)
  3. DIV+CSS如何设置字体间距
  4. Serverless五大优势,成本和规模不是最重要的,这点才是架构
  5. 转载 ---资深HR告诉你:我如何筛选简历与选择人员的
  6. 误泄露公司代码、疫情期间被裁,一个“菜鸟”程序员的生存日记
  7. 常用MYSQL日期查询
  8. 一步一步学Linq to sql(八):继承与关系
  9. Git学习总结(2)——初识 GitHub
  10. TimeQuest就一定要搞定——时序分析基本公式
  11. HyperLeger Fabric开发(七)——HyperLeger Fabric链码开发
  12. 三角函数π/2转化_三角函数不会做?看这里,带你搞定
  13. 量子计算的人才、软件和硬件:解开你对量子的困惑
  14. linux下安装jdk7
  15. 将 Keynote 演示文稿导出为 PPT 或其他文件格式
  16. 课程理论知识、教学实施
  17. 【Java应用】使用Java实现机器学习算法:聚类、分类、预测
  18. 代码改变生活-文件重命名
  19. 火车头采集翻页内容_火车头采集:内容替换支持[参数],标签
  20. Part 2 Linux programming:chapter 15:套接字和标准I/O

热门文章

  1. r语言简介_R语言简介
  2. 计算机网络中的传输协议是_计算机网络中的传输方式
  3. git菜单形式的_添加“Git Bash Here”到右键菜单
  4. linux vnc检查,检查Ubuntu VNC设置(避免远程登陆)
  5. c# 小程序支付后台示例_C中的#if指令示例| C预处理程序
  6. --c语言运算符_C按位运算符-能力问题和解答
  7. c语言i++和++i程序_使用C ++程序从链接列表中消除重复项
  8. 有关链表的小技巧,我都给你总结好了
  9. 经典面试题:聊一聊垃圾回收算法
  10. Spring Boot(十三)RabbitMQ安装与集成