回顾昨天的:Soul-源码阅读7-http插件注册简析
简单总结一下:
- http服务项目里添加了如下依赖,soul-spring-boot-starter-client-springmvc。项目启动后,这个依赖会扫描项目中有@SoulSpringMvcClient注解的controller以及接口方法。
<artifactId>soul-spring-boot-starter-client-springmvc</artifactId>
-
注解的时候给这个注解传递的path值,就是注册到网关的接口。
-
再根据http服务配置的appName、contextPath接口的前缀。可以生成完整的向网关请求的url。
-
根据http服务配置的网关url, 注册到此网关。
soul: http: adminUrl: http://localhost:9095 port: 8188 contextPath: /http appName: http full: false
-
当ioc容器加载处理完相应的bean之后,spring ioc发布事件,可以监听
ContextRefreshedEvent
事件,定位到ContextRegisterListener类,这边有个疑惑onApplicationEvent(final ContextRefreshedEvent contextRefreshedEvent), 会被调用2次,所以registered 好像用来判断是否已经注册过。public void onApplicationEvent(final ContextRefreshedEvent contextRefreshedEvent) { if (!registered.compareAndSet(false, true)) { return; } ..... }