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 中通过匿名类的方式实现了该接口, 当实例状态发生变化时, 刷新实例状态.