一文读懂spring.factories作用
文章目录
- 介绍
- @Import注解
- SPI扩展机制
- spring.factories文件
- 总结
介绍
在SpringBoot
中,如果想把容器注册在Spring
中,那么路径必须在SpringBootApplication
启动类包的根路径下,没有的话,也有2种方式进行注册:
- 使用
@Import
注解引入; - 使用
spring.factories
文件;
@Import注解
@SpringBootApplication
@Import(ServiceB.class) // 通过@Import注解把ServiceB添加到IOC容器里面去
public class MyBatisApplication {public static void main(String[] args) {SpringApplication.run(MyBatisApplication.class, args);}}
SPI扩展机制
在介绍spring.factories
之前,先贴一下SPI
的定义:
SPI
的全名为Service Provider Interface
大多数开发人员可能不熟悉,因为这个是是针对厂商或者插件的。在java.util.ServiceLoader
的文档里有比较详细的介绍;
spring.factories文件
在SpringBoot
中也有一种类似SPI
的加载机制,路径位于jar包中的META-INF/spring.factories
,数据为key=value格式存储,类似于下面这种,作用就是为了将指定类,注入到Bean
中;
# Auto Configure
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
org.apache.cxf.spring.boot.autoconfigure.CxfAutoConfiguration,\
org.apache.cxf.spring.boot.autoconfigure.openapi.OpenApiAutoConfiguration,\
org.apache.cxf.spring.boot.autoconfigure.micrometer.MicrometerMetricsAutoConfiguration
总结
- 如果在项目中,你想把某个类加载到
Spring
中,那么可以使用@Compont
注解进行加载; - 但如果是要加载一个独立jar包中的类,就需要使用
sprig.factories
; spring.factories
文件就是为了解决jar包中的类加载到容器中的,SpringBoot
在SpringFactoriesLoader
类中,以硬编码的方式指定了spring.factories
这个路径,所以这个文件就是一个扩展点;- 后面阅读源码,你会发现好多地方都是从
spring.factories
文件入手;
一文读懂spring.factories作用相关推荐
- 一文读懂Spring动态配置多数据源---源码详细分析
Spring动态多数据源源码分析及解读 一.为什么要研究Spring动态多数据源 代云小说网 https://www.3187.info 期初,最开始的原因是:想将答题服务中发送主观题答题数据给批 ...
- 一文读懂Spring中的AOP机制
一.前言 这一篇我们来说一下 Spring 中的 AOP 机制,为啥说完注解的原理然后又要说 AOP 机制呢? 1.标记日志打印的自定义注解 @Target({ElementType.METHOD}) ...
- 一文读懂Spring CLoud
一.前言 只有光头才能变强 认识我的朋友可能都知道我这阵子去实习啦,去的公司说是用SpringCloud(但我觉得使用的力度并不大啊~~)- 所以,这篇主要来讲讲SpringCloud的一些基础的知识 ...
- 一文读懂 Spring Boot、微服务架构和大数据治理三者之间的故事
微服务架构 微服务的诞生并非偶然,它是在互联网高速发展,技术日新月异的变化以及传统架构无法适应快速变化等多重因素的推动下诞生的产物.互联网时代的产品通常有两类特点:需求变化快和用户群体庞大,在这种情况 ...
- 4 年 46 个版本,一文读懂 Spring Cloud 发展历史
作者 | 方剑 责编 | 唐小引 头图 | CSDN 下载自东方 IC 出品 | CSDN(ID:CSDNnews) Spring Cloud 自 2016 年 1 月发布第一个 Angel.SR5 ...
- 干货|一文读懂 Spring Data Jpa!
有很多读者留言希望松哥能好好聊聊 Spring Data Jpa!其实这个话题松哥以前零零散散的介绍过,在我的书里也有介绍过,但是在公众号中还没和大伙聊过,因此本文就和大家来仔细聊聊 Spring D ...
- 一文读懂Spring Cloud底层原理
毫无疑问,Spring Cloud是目前微服务架构领域的翘楚,无数的书籍博客都在讲解这个技术.不过大多数讲解还停留在对Spring Cloud功能使用的层面,其底层的很多原理,很多人可能并不知晓.因此 ...
- 一文读懂spring boot 和微服务的关系
欢迎访问网易云社区,了解更多网易技术产品运营经验. Spring Boot 和微服务没关系, Java 微服务治理框架普遍用的是 Spring Cloud. Spring Boot 产生的背景,是开发 ...
- 一文读懂 Spring的前世今生
本文转载自公众号 编程新说 情景引入 很早之前,Java就火起来了,是因为它善于开发和处理网络方面的应用. Java有一个爱好,就是喜欢制定规范标准,但自己又不善于去实现. 反倒是一些服务提供商使用 ...
最新文章
- Eclipse+SVN搭建开发环境
- gdb工作原理(一)
- 设置Windbg符号文件路径
- illustrator下载_平面设计:16个Illustrator快捷方式可加快工作流程
- wchar_t 的输出问题
- 奖金(信息学奥赛一本通-T1352)
- DataGridView绑定对象数组 c# 1614236580
- 会话信息必须在服务器端,有关会话跟踪技术描述正确的是
- C# 使用 MemoryStream 将数据写入内存
- Lind.DDD.Aspects通过Plugins实现方法的动态拦截~Lind里的AOP
- CS231n-assignment1详解
- SAP中PR/PO创建技巧之缺省值个人设置
- svg图片调整大小和颜色
- 揭秘三位图灵奖得主Hinton、LeCun、Bengio的传奇人生
- python画八角星_Goc-N角星的绘制
- vue组件间通信六种方式
- Codeforces 940E: Cashback 单调队列优化DP
- 开源的前端GIS空间分析库介绍 (一)jsts与turf
- 第十周实验指导--任务3--先建立一个Point(点)类,再派生出一个Circle(圆)类,再派生出一个Cylinder(圆柱体)类...
- Tomcat启动项目警告: org.apache.jasper.servlet.TldScanner.scanJars 至少有一个JAR被扫描用于TLD但尚未包含TLD