spring.factories 的基本作用

在若依-微服务版的源码学习中,发现项目中多次用到了 spring.factories 。因此记录一下自己的学习总结:
参考博客:

  • spring.factories 的具体原理可以参考:https://www.jianshu.com/p/00e49c607fa1

  • spring.factories 的基本作用可以参考:https://www.cnblogs.com/huanghzm/p/12217630.html

前提:

在微服务项目中,存在这多个不同的子模块,这些子模块可能是一个独立的Spring Boot 项目,也可能是普通的maven项目。

问题提出:

我们通常有这么一种需求,将多个子模块都可能用到的组件从单个子模块中抽离出来组成一个公共模块。比如将所有子模块的接口抽离,抽离出来的公共部分也可能存在着需要注入 spring 容器中的组件。

那么这样就引出了一个新的问题。我们都知道 Spring Boot的自动扫描包的扫描范围是 SpringBootApplication启动类所在的包以及子包目录下。那么我们抽离出来的公共部分在 SpringBoot 项目启动时就不可能会被自动扫包。

问题解决:

  1. SpringBootApplication启动类中添加 @import 注解。
  2. 使用 spring.factories

主要介绍 spring.factories

spring.factories文件需要创建在 resources/META-INF路径下。

main
|-- resources
|     └- META-INF
|         └-- spring.factories

spring.factories文件是通过 Properties 解析得到的,所以文件内容格式通常是安装以下方式:

com.xxx.interface=com.xxx.classname

如果一个接口希望配置多个实现类,可以使用 ", "进行分割。

在若依-微服务版中同样是通过 spring.factories解决:

org.springframework.boot.autoconfigure.EnableAutoConfiguration=\com.ruoyi.system.api.factory.RemoteUserFallbackFactory,\com.ruoyi.system.api.factory.RemoteLogFallbackFactory, \com.ruoyi.system.api.factory.RemoteFileFallbackFactory

通过 spring.factories文件的方式,在启动服务时(启动SpringBoot项目)只要引入的包即可实现第三方组件自动扫包。

spring.factories 的基本使用相关推荐

  1. SpringBoot解耦的扩展机制 Spring Factories介绍及使用

    一.什么是 SPI机制 Spring Boot中有一种非常解耦的扩展机制:Spring Factories.这种扩展机制实际上是仿照Java中的SPI扩展机制来实现的.SPI的全名为Service P ...

  2. Spring Boot 之spring.factories

    首先抛出一个问题:如果想要被Spring容器管理的Bean的路径不再Spring Boot 的包扫描路径下,怎么办呢?也就是如何去加载第三方的Bean 呢? 有两种方式可以解决: 这里我们使用Swag ...

  3. spring.factories 的妙用

    现象 在阅读 Spring-Boot 相关源码时,常常见到 spring.factories 文件,里面写了自动配置(AutoConfiguration)相关的类名,因此产生了一个疑问:"明 ...

  4. openfeign远程调用不起作用解决_使用Spring Boot的spring.factories进行注入---SpringCloud Alibaba_若依微服务框架改造---工作笔记007

    我们在若依的: ruoyi-api-system模块中,可以看到在 com.ruoyi.system.api包下,有各种的 RemoteUserService等,然后我防着写了个自己的,但是发现,调用 ...

  5. Spring Boot 之 spring.factories的用法

    原因 为什么要使用,因为在程序开发中,可能包名不一样,pom依赖的很多的jar 他们是如何把这些类进行注入到spring容器中的呢. 所以springboot就提出了spring.factories ...

  6. SpringBoot加载spring.factories的价值

    SpringBoot加载spring.factories的价值 在springboot的各个依赖包下,我们经常看到META-INF/spring.factories这个文件.spring.factor ...

  7. spring.factories详解

    在Spring Boot中有一种非常解耦的扩展机制:Spring Factories.这种扩展机制实际上是仿照Java中的SPI扩展机制来实现的. Java SPI机制SPI的全名为Service P ...

  8. Spring Factories机制

    Spring Factories机制简述 Spring Factories机制和Java SPI的扩展机制类似,Spring Boot采用了spring.factories的扩展机制,在很多sprin ...

  9. 简单介绍【spring.factories】的使用

    前言 starter的使用在springboot项目中可以说是非常常见,可能有些朋友在使用springboot项目的时候只是在网络上找了一篇如何创建一个springboot,如何又和mybatis或m ...

最新文章

  1. 交换和路由的区别?VLAN的特点?
  2. Linux服务器CPU、内存、磁盘空间、负载情况查看python脚本
  3. 易想商城V4.7.1 过期到期解决办法
  4. PHP获取浏览器版本号
  5. matlab内维尔差值代码,计算方法上机练习数值积分(包括两次作业).PDF
  6. js中this和回调方法循环-我们到底能走多远系列(35)
  7. centos7下SVN服务器搭建
  8. Ambari--主机管理
  9. 阿里发力线下渠道,腾讯京东该如何打破其流量优势?
  10. 常用滤波算法(转载)
  11. Java实现贪吃蛇大作战小游戏(完整版)
  12. 新版PMP考试解题技巧有哪些?总结在这里
  13. java工程师和全栈工程师_java全栈工程师 - 北大青鸟东莞金码学校官网
  14. X1000代码烧写配置
  15. 街头篮球 服务器中断,win7系统下玩街头篮球卡机如何解决
  16. js中utf8和中文互转的方法
  17. 校园招聘的秋招和春招有什么区别?
  18. Ubuntu下搭建SVN与Apache权限控制
  19. python编程从入门到实践django-首页
  20. 2023电工杯数学建模竞赛A题思路解析+代码+论文

热门文章

  1. SkyEye硬件模拟平台:硬件仿真实现之一
  2. python组合和继承_python 继承与组合
  3. iOS 高仿微信相机拍摄和编辑
  4. 计算机Word如何删空行,绝招来了,一键删除Word文档中的空行、空格
  5. 上市公司虚假会计报表识别技术(珍藏版)
  6. Chromium多进程架构简要介绍和学习计划
  7. BroadcastReceiver 动态注册
  8. 阿里云OSS——对象存储服务(工具)
  9. 现在的梦幻西游手游私服到底是什么样子,带你走近看看
  10. 工资 饼就这么大,资本是如何内卷剥削的? 集体计件工资算法