[发明专利]初始化方法、装置、电子设备及计算机可读存储介质在审
申请号: | 202110650696.2 | 申请日: | 2021-06-10 |
公开(公告)号: | CN113568673A | 公开(公告)日: | 2021-10-29 |
发明(设计)人: | 张瑞;杨晶 | 申请(专利权)人: | 北京旷视科技有限公司 |
主分类号: | G06F9/445 | 分类号: | G06F9/445;G06F9/4401;G06F9/448 |
代理公司: | 北京超凡宏宇专利代理事务所(特殊普通合伙) 11463 | 代理人: | 何少岩 |
地址: | 100080 北京市海淀区*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 初始化 方法 装置 电子设备 计算机 可读 存储 介质 | ||
本发明涉及一种初始化方法、装置、电子设备及计算机可读存储介质,该方法包括:获取到初始化微服务框架Spring Cloud的初始化指令,在所述Spring Cloud内包括未初始化的第三方客户端类以及未初始化的监听器类;响应所述初始化指令,解除所述监听器类与所述第三方客户端类之间的依赖关系,对所述第三方客户端类与所述监听器类进行串行初始化;在完成对所述第三方客户端类与所述监听器类的初始化后,重新建立两者之间的依赖关系。通过该方法,可以解决在初始化Spring Cloud时,第三方客户端类和监听器类在同一个配置类中注册所引发的循环异常问题。
技术领域
本申请属于微服务领域,具体涉及一种初始化方法、装置、电子设备及计算机可读存储介质。
背景技术
在基于微服务框架Spring Cloud进行开发时,需要先对Spring Cloud进行初始化。在初始化过程中,需要创建一个与Spring Cloud对应的容器AnnotationConfigEmbeddedWebApplicationContext,简称为第一容器,并对该第一容器所对应的上下文执行refresh()方法。
在执行refresh()方法时,会调用registerListeners()方法注册Spring Cloud内的所有监听器类,即ApplicationListener类,而监听器类一般是以@Bean的方式配置在@Configuration标注的类中,因此,若要初始化监听器类,必须要求@Configuration标注的类先于监听器类初始化。
然而,在现有技术中,在初始化@Configuration标注的类时,由于依赖于第三方客户端类,即FeignClient类,因此,也就要求FeignClient类需要先初始化。而初始化FeignClient类时,会自行创建另一个容器ApplicationContext,简称为第二容器,并对该第二容器所对应的上下文执行refresh()方法,此时,又会调用registerListeners()方法,导致在同一时间段内,registerListeners()方法被调用至少两次,且都去初始化所有的监听器类,进而导致监听器类被循环加载,引起Spring Cloud整体初始化异常,导致初始化失败。
发明内容
有鉴于此,本申请的目的在于提供一种初始化方法、装置、电子设备及计算机可读存储介质,用于解决在初始化Spring Cloud时,FeignClient和ApplicationListener在同一个配置类中注册所引发的循环异常问题。
本申请的实施例是这样实现的:
第一方面,本申请实施例提供一种初始化方法,所述方法包括:获取到初始化微服务框架Spring Cloud的初始化指令,在所述Spring Cloud内包括未初始化的第三方客户端类以及未初始化的监听器类;响应所述初始化指令,解除所述监听器类与所述第三方客户端类之间的依赖关系,对所述第三方客户端类与所述监听器类进行串行初始化。
在上述过程中,由于第三方客户端类与监听器类的初始化方式为串行初始化,即一个完成初始化之后,另一个才开始进行初始化,因此,在上述初始化监听器类的过程中,不会主动去对第三方客户端类进行初始化,从而可以避免初始化监听器类时所导致的要提前初始化第三方客户端类而再次执行refresh()方法去初始化监听器类,进而可以避免监听器类在同一时间被循环初始化,以及避免初始化失败。
结合第一方面实施例,在一种可能的实施方式中,所述解除所述监听器类与所述第三方客户端类之间的依赖关系,包括:通过删除所述第三方客户端类的@Autowired注解的方式,来解除所述监听器类与所述第三方客户端类之间的依赖关系。
结合第一方面实施例,在一种可能的实施方式中,在进行所述串行初始化时,包括:先初始化所述监听器类,并在所述监听器类完成初始化后,再初始化所述第三方客户端类。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京旷视科技有限公司,未经北京旷视科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202110650696.2/2.html,转载请声明来源钻瓜专利网。