Java面试题(8)-Spring Factories机制

Spring Factories机制

那么这篇文章是根据这位博主的文章我看完之后收获很多然后自己精简了自己想记录的写了下来:

Spring Factories机制_希波克拉的博客-CSDN博客_springfactories机制

 首先就是什么事Spring Factoryies机制:

Spring Factories机制和Java SPI的扩展机制类似,Spring Boot采用了spring.factories的扩展机制,在很多spring的starter 包中都可以看到,通过读取 META-INF/spring.factories文件中的配置指定自动配置类入口,然后在程序中读取这些配置文件并实例化,从而让框架加载该类实现jar的动态加载。比如我们自定义的一些Spring Boot Starter公共组件就可以使用Spring Factories机制,通过极简的配置就可以在需要使用组件的地方引入依赖直接使用。

什么是SPI机制呢:

SPI ,全称为 Service Provider Interface,是一种服务发现机制。它通过在ClassPath路径下的META-INF/services文件夹查找文件,自动加载文件里所定义的类。

这一机制为很多框架扩展提供了可能,比如在Dubbo、JDBC中都使用到了SPI机制。

我们可以通过源码找到SpringFactoriesLoader这个核心类:并且直接映入眼帘的就是第一行的那个 

FACTORIES_RESOURCE_LOCATION = "META-INF/spring.factories";

这个 META-INF/spring.factories在我们的启动类中相当的熟悉了。

而这个SpringFactoriesLoader核心类,就是对这个路径下的配置类进行扫描,这个核心类中有两个核心方法:

  • loadFactories 根据接口类获取其实现类的实例,这个方法返回的是对象列表。
  • loadFactoryNames 根据接口获取其接口类的名称,这个方法返回的是类名的列表。

就是这俩玩意,通过这两个方法进行了全限定类名的列表,以及通过全限定类名,利用反射机制返回这些全限定类名的对象列表。从而便于Springboot进行自动注入。也就是我们说的自动装配。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值