起跑器是什么意思(跳靴的起跑器原理)
admin
2023-09-23 16:04:37

在分析原理之前,我们不妨试着做一个自己的简易starter(本文假设你是一个有一定经验的开发者)。

环境准备

maven导入如下(不需要),其他省略。

父母

groupIdorg.springframework.boot/groupId

artifactId spring-boot-starter-parent/artifactId

version2.1.3.RELEASE/version

/父母

Ps:官方建议命名跳过

代码准备

准备一个相当简单的类,不受代码约束;如果需要深度扩展,请参考导入或配置注释来导入更多的类。我们只为这个项目自动注入CustomStarter类。

是的,你没看错,就是自动注入一个类,一个类,一个类。

packagecom.ws

publicsclasscustomstarter {

publicintadd(inta,intb){

return b;

}

}

配置文件准备

在资源目录下创建一个目录META-INF,在META-INF下创建一个名为spirng.factories的文件。

效果如下:3360

重点来了:

将以下:添加到spring.factories文件中。

org . spring framework . boot . auto configure . enable auto configuration=com . ws . custom starter

填写我们在这里定义的类的完全限定路径。

最后一步

使用maven命令或idea打包这个项目,就大功告成了。

怎么用?可以直接将打包的项目导入springBoot项目。

好了,简单的开胃菜做完了,重头戏来了。前面都是小打小闹,就从原理/源码分析开始吧

spring.factories文件

springBoot不能无缘无故自动注入定义好的bean,它必须在某个地方静默加载定义好的starter。

那么它应该在哪里呢?没错,就是spring.factories文件。

我们定义了一个重要的kv内容,并分配了定义的CustomStarter来启用自动配置,那么这个文件名和路径是从哪里来的呢?我们来看看源代码:

如图,这个类是一个配置加载器,作用如下:

加载spring.factories以保存加载的配置。

SpringFactoriesLoader

EnableAutoConfiguration

解决了关于文件spring.factories来源的疑惑,下面我们来解决关于EnableAutoConfiguration的疑惑。

EnableAutoConfiguration本质上是一个注释。

让我们转到注释的来源,如图所示。

自动配置导入选择器

根据指定的类对象和类加载,从SpringFactoriesLoader中获取相应的字符串集。

字面意思是返回自动配置的类名。

让我们仔细看看红色部分,这是定义EnableAutoConfiguration :的来源。

启用自动配置源

BeanDefinitionRegistryPostProcessor后置处理器

我们已经知道了配置文件的来源和内容,然后我们将宣布实现的时间。

首先,让我们了解bean definition Registry post processor接口,它继承了BeanFactoryPostProcessor接口。

漫步BeanFactoryPostProcessor接口含义:

这是一个BeanFactory的后处理器,和BeanPostProcessorbean的后处理器不同。它是对BeanFactory的补充,增强的机会是在beanFactory构建之后(目前还没有BeanDefinition)。

这是我们的重点吗?当然不是,这里只是提一下,我们关注的是BeanFactoryPostProcessor的接口方法postprocessbeadefinitionregistry,它是执行自动注入逻辑的入口,如图(直接截图调试器栈,是我太懒了吗?):

这就是结局!游戏结束!

总结

入门的原理其实不难,主要是把握这几点:

1.BeanFactoryPostProcessor后处理器及其子类Beandefinition注册表后处理器。

Spring.factories文件(以上为个人理解,如不到位请注明,谢谢!)

在修远还有很长的路要走,我会忽上忽下!我们还有很长的路要走!

相关内容

热门资讯

金花创建房间/微信金花房卡怎么... 1.微信渠道:(荣耀联盟)大厅介绍:咨询房/卡添加微信:88355042 2.微信游戏中心:打开微...
金花房间卡/金花房卡如何购买/... 金花房间卡/金花房卡如何购买/新超圣金花房卡正版如何购买新超圣是一款非常受欢迎的游戏,咨询房/卡添加...
牛牛创建房间/金花房卡批发/神... 微信游戏中心:神牛大厅房卡在哪里买打开微信,添加客服【88355042】,进入游戏中心或相关小程序,...
链接牛牛/牛牛房卡游戏代理/鸿... 鸿运大厅房卡更多详情添加微:33549083、 2、在商城页面中选择房卡选项。 3、根...
科技实测!牛牛房卡怎么获得/乐... 微信游戏中心:乐酷大厅房卡在哪里买打开微信,添加客服【88355042】,进入游戏中心或相关小程序,...