Spring Cloud Edgware新特性之七:可选的EnableDiscoveryClient注解
回到Spring Cloud——
相信熟悉Spring Cloud的读者对注解@EnableDiscoveryClient
及@EnableEurekaClient
并不陌生。简单回顾一下——
要想将一个微服务注册到Eureka Server(或其他服务发现组件,例如Zookeeper、Consul等),只需:
添加Eureka Client(或其他服务发现组件的Client)依赖:
1 | <dependency> |
写注解:在启动类上添加注解@EnableDiscoveryClient
或@EnableEurekaClient
1 | @EnableDiscoveryClient |
写配置:
1 | http%3A%2F%2Flocalhost%3A8761%2Feureka%2F%22%2C%22id%22%3A%22kF2iX%22%2C%22type%22%3A%22block%22%7D" data-card-type="block" data-card-key="codeblock" data-id="d3921570-Ae2YN5Jj" data-card-editable="false"> xxxxxxxxxx 1 spring: 2 application: 3 name: microservice-provider-user 4 eureka: 5 client: 6 serviceUrl: 7 defaultZone: http://localhost:8761/eureka/ |
从Spring Cloud Edgware开始,@EnableDiscoveryClient
或@EnableEurekaClient
可省略。只需加上相关依赖,并进行相应配置,即可将微服务注册到服务发现组件上。
分析
文章写到这里,Edgware新特性已经结束了。
但Spring Cloud为什么要这么设计/改进呢?
这是由于在实际项目中,我们可能希望实现“不同环境不同配置”的效果——例如:在开发环境中,不注册到Eureka Server上,而是服务提供者、服务消费者直连,便于调测;在生产环境中,我们又希望能够享受服务发现的优势——服务消费者无需知道服务提供者的绝对地址。为适应该需求,Spring Cloud Commons进行了改进,相关
如不想将服务注册到Eureka Server,只需设置spring.cloud.service-registry.auto-registration.enabled=false
,或@EnableDiscoveryClient(autoRegister = false)
即可。