@EnableEurekaClient的用途是什么?

时间:2020-02-22 06:07:57

标签: java spring spring-boot

我创建了2个Spring Boot应用程序,一个是Eureka服务器,第二个是没有任何代码的普通Spring Boot应用程序,在第二个应用程序中,我刚刚添加了maven依赖项,如下所示:

   <dependency>
   <groupId>org.springframework.cloud</groupId>
   <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
   </dependency>

我没有在第二个应用程序中使用任何@EnableEurekaClient之类的注释,也没有在application.properties中配置任何与eureka相关的属性。

仍然我的第二个应用程序已在Eureka注册。怎么样?如果只是由于Maven依赖而发生,那么@EnableEurekaClient的用途是什么?

1 个答案:

答案 0 :(得分:0)

我假设您在客户端应用程序的bootstrap类中使用了SpringCloundApplication批注。如下所示:

@SpringCloudApplication
public class Application {
      public static void main(String[] args) {
          SpringApplication.run(Application.class);
      }
}

@SpringBootApplication,为我们提供了相同的自动配置,组件扫描和属性 支持(除其他外)我们爱上了。此外,它添加了@EnableDiscoveryClient 向Eureka和@EnableCircuitBreaker注册,以便在远程服务关闭时创建后备命令。以下是SpringCloudAnnotation包含的内容:

@SpringBootApplication
@EnableDiscoveryClient
@EnableCircuitBreaker
public @interface SpringCloudApplication {
}

同时有@EnableEurekaClient和@EnableDiscoveryClient批注。 DiscoveryClient是Spring Cloud Netflix在EurekaClient上方放置的抽象接口 构建将来的服务注册工具的事件。在这一点上,几乎没有 我们代码的区别,除了方便使用单个 注解,@ SpringCloudApplication,将我们的组件变成微服务。

结论: EurekaClient用于使用Eureka进行服务发现。 DiscoveryClient是一个接口,是其他实现服务发现工具的标准。

Eureka Client的示例

@Configuration
@ComponentScan
@EnableAutoConfiguration
@EnableEurekaClient
@RestController
public class Application {

    @RequestMapping("/")
    public String home() {
        return "Hello world";
    }

    public static void main(String[] args) {
        new SpringApplicationBuilder(Application.class).web(true).run(args);
    }

}