一文读懂spring.factories作用
一文读懂spring.factories作用;如果想把容器注册在中,那么路径必须在启动类包的根路径下,没有的话,也有2种方式进行注册:SPI扩展机制在介绍之前,先贴一下 的定义:在 中也有一种类似的加载机制,路径位于jar包中的,数据为key=value格式存储,类似于下面这种,作用就是为了将指定类,注入到中;............
·
介绍
在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
文件入手;
更多推荐
已为社区贡献2条内容
所有评论(0)