当前位置: 代码网 > it编程>编程语言>Java > 浅谈spring.factories文件的作用

浅谈spring.factories文件的作用

2024年07月03日 Java 我要评论
对于在maven中引用的其他外部包加入容器的过程,需要用到spring.factories。spring.factories文件是spring boot自动配置的核心文件之一,它的作用是将各种自动配置

对于在maven中引用的其他外部包加入容器的过程,需要用到spring.factories。

spring.factories文件是spring boot自动配置的核心文件之一,它的作用是将各种自动配置类与对应的配置类集中在一起,方便spring boot自动装配。在spring boot启动时,它会扫描classpath下所有的spring.factories文件,加载其中的自动配置类,并将它们注入到spring applicationcontext中,使得项目能够自动运行。该文件的格式为键值对,键是自动配置类的全限定名,值是该自动配置类所对应的配置类的全限定名

首先@springapplication注解标识在启动类上, 它是一个组合注解点进去可以看到

在这里插入图片描述

其中@enableautoconfiguration也就是开启自动装配, 继续跟踪@enableautoconfiguration注解, 它使用一个@import 注解, 将一个类名为autoconfigurationimportselector注入到ioc容器中.

在这里插入图片描述

这个autoconfigurationimportselector类很重要, 因为springboot项目启动时, 会调用它里面一个方法loadfactorynames, 这个方法会扫描pom文件中引入的其他starter中的spring.factories文件, 具体的调用路径为:

1、调用selectimports()方法

在这里插入图片描述

2、调用getautoconfigurationentry( )

在这里插入图片描述

3、–>调用getcandidateconfigurations( )–>

在这里插入图片描述

可以看到最后调用loadfactorynames( )方法,这个方法的逻辑就是扫描pom文件中引入的其他starter中的spring.factories文件。

spring.factories文件内容示例如下:

org.springframework.boot.autoconfigure.enableautoconfiguration=\
  com.baomidou.mybatisplus.autoconfigure.mybatispluslanguagedriverautoconfiguration,\
  com.baomidou.mybatisplus.autoconfigure.mybatisplusautoconfiguration

spring.factories用键值对的方式记录了所有需要加入容器的类,enableautoconfigurationimportselector的selectimports方法返回的类名,来自spring.factories文件内的配置信息,这些配置信息的key等于enableautoconfiguration,因为spring boot应用启动时使用了enableautoconfiguration注解,所以enableautoconfiguration注解通过import注解将enableautoconfigurationimportselector类实例化,并且将其selectimports方法返回的类名实例化后注册到spring容器。

即spring.factories文件是帮助spring-boot项目包以外的bean(即在pom文件中添加依赖中的bean)注册到spring-boot项目的spring容器中。由于@componentscan注解只能扫描spring-boot项目包内的bean并注册到spring容器中,因此需要@enableautoconfiguration注解来注册项目包外的bean。而spring.factories文件,则是用来记录项目包外需要注册的bean类名。

到此这篇关于浅谈spring.factories文件的作用的文章就介绍到这了,更多相关spring.factories作用内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com