spring-cloud-config环境中使用的配置
引入 EurekaDiscoveryClientConfiguration
和 EurekaClientAutoConfiguration
RefreshScopeRefreshedEvent
的listener. 收到事件后重新注册实例. eureka.client.healthcheck.enabled
设置为true时, 注册 EurekaHealthCheckHandler
bean. EurekaHealthCheckHandler
负责将应用状态映射为实例状态 InstanceStatus
. 支持spring-cloud和非spring-cloud环境, 在spring-cloud环境中, 下面两个bean要使用 @RefreshScope
标注
EurekaClient
bean, 在spring-cloud中使用实现类 CloudEurekaClient
. EurekaInstanceConfig
实例, 实例化 ApplicationInfoManager
bean 在spring-cloud-config的环境中, 将 configPath
加入到实例的metadata map中.
当config客户端希望通过服务发现寻找config服务的时候使用的引导配置
在 spring.cloud.config.discovery.enabled
为 true
时, 关闭父application context里实例化的 EurekaClient
实例. 只使用当前上下文里的实例.
核心配置
支持spring-cloud(支持动态配置)和非spring-cloud环境, EurekaClient
和 EurekaInstanceConfig
两个bean要使用 @RefreshScope
标注
EurekaInstanceConfigBean
的实例 DiscoveryClient
的实现, 在这里是 EurekaDiscoveryClient
EurekaServiceRegistry
EurekaRegistration
EurekaAutoServiceRegistration
, 这个类实现了StartLifecycle接口. 在ApplicationContext refresh或者shutdown之后注册或者注销当前实例 EurekaClient
bean, 在spring-cloud中使用实现类 CloudEurekaClient
EurekaInstanceConfig
实例, 实例化 ApplicationInfoManager
bean
当启用Eureka client(eureka.client.enable为true和ribbon.eureka.enabled为true时, 默认为true)时配置默认基于eureka的ribbon.
使用 EurekaRibbonClientConfiguration
提供的配置: RibbonPing, ServerList, ServerIntrospector.
提供监听 RefreshScopeRefreshedEvent
的监听器, 当事件发生时注销并重新注册(防止metadata发生改变)
提供一个默认的EurekaHealthCheckHandler实例, 当bean不存在的且 eureka.client.healthcheck.enabled
为true时.
spring提供的服务实例注册和注销的接口.
ServiceRegistry的Eureka实现. 注册和注销的实现是通过 EurekaRegistration
的 ApplicationInfoManager
修改实例状态实现的.
通过实现 ServiceInstance
提供访问实例信息的接口,
提供修改实例状态的接口, 并通知状态变化的监听器.
提供内部类 StatusChangeListener
.
提供注册和注销状态变化监听器的接口, Eureka的 DiscoveryClient
中通过匿名类的方式实现了该接口, 当实例状态发生变化时, 刷新实例状态.