赞
踩
<dependencies> <!--spring cloud alibaba--> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> </dependency> </dependencies>
@RestController @RequestMapping("/provider") public class ProviderController { @Value("${server.port}") private Integer port; @GetMapping("/hello") public String hello() { return "server port: " + port + ", say: Hello World"; } }
@SpringBootApplication
public class ProviderApplication {
public static void main(String[] args) {
SpringApplication.run(ProviderApplication.class);
}
}
描述: springboot 自动装配原理,查看nacos包下面的 spring.factories文件。找到NacosServiceRegistryAutoConfiguration类,该类作用是nacos服务自动装配。
描述: 查看当前类图。发现当前类实现了ApplicationListener接口,及有监听事件。
描述: 查看监听事件。监听事件在其父类AbstractAutoServiceRegistration里。
描述: 跟踪bind方法。
描述: 进入start方法。
描述: 进入NacosAutoServiceRegistration类 register 方法。
描述: 进入AbstractAutoServiceRegistration 类register方法。
描述: 既然怒NacosServiceRegistry类register方法。
@Override public void register(Registration registration) { if (StringUtils.isEmpty(registration.getServiceId())) { log.warn("No service to register for nacos client..."); return; } //获取namingService,serviceId、组id NamingService namingService = namingService(); String serviceId = registration.getServiceId(); String group = nacosDiscoveryProperties.getGroup(); //封装注册实例 Instance instance = getNacosInstanceFromRegistration(registration); try { //注册 namingService.registerInstance(serviceId, group, instance); log.info("nacos registry, {} {} {}:{} register finished", group, serviceId, instance.getIp(), instance.getPort()); } catch (Exception e) { log.error("nacos registry, {} register failed...{},", serviceId, registration.toString(), e); // rethrow a RuntimeException if the registration is failed. // issue : https://github.com/alibaba/spring-cloud-alibaba/issues/1132 rethrowRuntimeException(e); } }
描述: NacosNamingService 调用registerInstance 进行当前服务的注册。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。