1. 背景
接着上次的说,Nacos问题的分析。这次就来分享一下自己的分析方法。以及如何利用Spring事件完成服务注册。
2. 分析一下
2.1 问题分析过程
问题是这样的,我以为是Nacos服务注册不上吗? 那就肯定是注册有问题了, 那就去找是服务是如何注册的。
关键是从哪找呢?具体步骤:知道服务启动方式。如Nacos,就是通过properties,那就找哪有用到启动的属性文件
项目用SpringBoot集成,那核心类的加载就在Spring.factories中。(这个文件会被springSPI加载到)
找到关键类
很凑巧,我们在spring.factories中找到了名字很像启动注册类的类。如下图:Spring.factories在找类的时候不要怕错,大胆猜,只要验证了自己的想法即可,不对就在接着找。
com.alibaba.cloud.nacos.registry.NacosServiceRegistryAutoConfiguration类我们找到了,接下来就是去看这个类中的代码去验证自己的想法了。
2.2 Nacos是如何利用Spring事件来实现服务注册的?
com.alibaba.cloud.nacos.registry.NacosServiceRegistryAutoConfiguration代码如下:
public class NacosServiceRegistryAutoConfiguration {
// 注册类实现,验证我们的想法,需要用到NacosDiscoverProperties @Bean
public NacosServiceRegistry nacosServiceRegistry(
NacosDiscoveryProperties nacosDiscoveryProperties) {
return new NacosServiceRegistry(nacosDiscoveryProperties);
}
// 构建注册事例,依然要用到NacosDiscoverProperties @Bean
@ConditionalOnBean(AutoServiceRegistrationProperties.class)
public NacosRegistration nacosRegistration(
NacosDiscoveryProperties nacosDiscoveryProperties,
ApplicationContext context) {
return new NacosRegistration(nacosDiscoveryProperties,