Apollo 1— 融合 Spring 的三个入口

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Apollo 1— 融合 Spring 的三个入口相关的知识,希望对你有一定的参考价值。

参考技术A Spring 作为 Java 世界非官方标准框架,任何一个中间件想要得到良好的发展,必须完美支持 Spring 的各种特性,即:无缝融入 Spring。

Apollo 作为分布式配置中心,服务于 Java 应用程序,Java 应用程序可以通过 Apollo 提供的 Client 获取远程配置信息。而如何将这个 Client 高度融合到用户的应用程序中呢?

这就需要针对 Spring 提供给我们的接口进行扩展。

在之前的文章中,已经大致聊过 Spring 的一些扩展接口: 深入理解Spring 之 Spring 进阶开发必知必会 之 Spring 扩展接口 。

而想融入 Spring,首先得找到入口,然后才能注册相关的类进行自己系统的初始化。
所以,如何找到并处理入口成了一门学问,我们今天看看 apollo 如何处理的。

XML 是传统 Java 项目的配置文件,特别是 Spring MVC 项目。虽然现在都是使用的自动化配置,但仍然有一些遗留项目使用 XML,因此,支持 XML 是大部分中间件的必须工作。

支持 XML 需要准守 Spring 的几个约定:

如果你的 xml 配置中,引用了 apollo 的标签,Spring 将会根据 xml 中的 URL 找到 spring.handlers 中的 NamespaceHandlerSupport 类,并对标签进行解析。也会从 getBeanClass 得到一个设置的 bean,在这个 bean 里,做了 apollo 关键类的注册。

相对于基于XML的配置,基于Java的配置是目前比较流行的方式。

@Import 注解的使用方式:

目前最流行的框架就是 Spring Boot ,兼容 SpringBoot 是一个大趋势。

Spring Boot 提供 spring-boot-autoconfigure 让第三方框架兼容 Boot,称之为 starter。

创建一个 starter 需要遵守几个约定:

在 apollo 中, ConfigPropertySourcesProcessor 就是用来注册系统关键 bean 的。

本文重点介绍了 3 种入口:

在以后的开发中,如果想融入 Spring,就可以通过这 3 种方式自行处理。

以上是关于Apollo 1— 融合 Spring 的三个入口的主要内容,如果未能解决你的问题,请参考以下文章

Apollo 1 融合 Spring 的三个入口

自动驾驶 Apollo 源码分析系列,感知篇:感知融合代码的基本流程

自动驾驶 Apollo 源码分析系列,感知篇:感知融合代码的基本流程

自动驾驶 Apollo 源码分析系列,感知篇:感知融合代码的基本流程

自动驾驶 Apollo 源码分析系列,感知篇:感知融合代码的基本流程

自动驾驶 Apollo 源码分析系列,感知篇:感知融合中的数据关联细节