首页 > 其他 > 详细

配置类【RibbonAutoConfiguration】的实例属性【configurations】是如何注入的?---实例化

时间:2020-01-06 22:09:48      阅读:165      评论:0      收藏:0      [点我收藏+]

1、Tomcat启动【Web】应用时要默认实例化【ServletContextInitializer】类型的Bean定义,类【ServletEndpointRegistrar】实现了该接口。

2、包【spring.boot.actuator.autoconfigure】中的内部静态配置类【ServletEndpointManagementContextConfiguration.WebMvcServletEndpointManagementContextConfiguration】通过【@Bean】注解的方法【servletEndpointRegistrar()】定义了该类,所以该配置类中的Bean定义在启动时要实例化。

3、在实例化【ServletEndpointRegistrar】的过程中要通过【ServletEndpointsSupplier】的方法【getEndpoints()】获取所有的服务端点,即被【@Endpoint】注解。

4、其中就有一个类【FeaturesEndpoint】被【@Endpoint】注解,并在内部静态配置类【CommonsClientAutoConfiguration.ActuatorConfiguration】中通过方法【featuresEndpoint()】被【@Bean】注解的方式生成了名称为【featuresEndpoint】的Bean定义。

5、为了实例化该Bean,就要实例化该Bean的工厂类,即内部静态配置类【CommonsClientAutoConfiguration.ActuatorConfiguration】。实例化完之后就要为其注入类型为【List<HasFeatures>】的属性【hasFeatures】,然后就开始在上下文的【BeanFactory】中寻找类型为【HasFeatures】的Bean定义。

6、在配置类【RibbonAutoConfiguration】中存在通过为方法【ribbonFeature()】添加【@Bean】生成名称为【ribbonFeature】的Bean定义,除此之外还有【eurekaFeature】和【commonsFeature】。

7、要想实例化【ribbonFeature】Bean,首先要实例化其Bean工厂【RibbonAutoConfiguration】。在实例化完Bean工厂后,还要为其注入类型为【List<RibbonClientSpecification>】的属性【configurations】。然后就开始在上下文的【BeanFactory】中寻找类型为【RibbonClientSpecification】的Bean并进行注入。

8、经过上面一系列的操作后,配置类【RibbonAutoConfiguration】就完成了实例化,并且其【configurations】属性就拥有了默认和自定义的三个客户端配置项。

技术分享图片

技术分享图片

技术分享图片

技术分享图片

技术分享图片

技术分享图片

技术分享图片

技术分享图片

技术分享图片

技术分享图片

技术分享图片

技术分享图片

技术分享图片

技术分享图片

技术分享图片

技术分享图片

技术分享图片

技术分享图片

技术分享图片

技术分享图片

技术分享图片

技术分享图片

技术分享图片

技术分享图片

技术分享图片

技术分享图片

技术分享图片

技术分享图片

技术分享图片

技术分享图片

技术分享图片

技术分享图片

技术分享图片

技术分享图片

技术分享图片

技术分享图片

技术分享图片

技术分享图片

技术分享图片

技术分享图片

技术分享图片

技术分享图片

技术分享图片

技术分享图片

技术分享图片

技术分享图片

配置类【RibbonAutoConfiguration】的实例属性【configurations】是如何注入的?---实例化

原文:https://www.cnblogs.com/StarkBrothers/p/12158473.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!