使用 Eureka 注册服务

本文将带你深入学习如何将 Spring Boot 微服务应用注册到 Eureka 服务器中。在注册应用前,请确保 Eureka Server 已经运行在 8761 端口或者先构建 Eureka 服务器并运行起来。有关搭建 Eureka 服务器的信息,可以参考本系列教程的相关部分。
首先,你需要在构建配置文件中加入以下依赖,以注册微服务到 Eureka 服务器。
Maven 用户可以加上下面的依赖到 pom.xml 文件:
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-eureka</artifactId> </dependency>
Gradle 用户可以加上下面的依赖到 build.gradle 文件:
compile('org.springframework.cloud:spring-cloud-starter-eureka')
现在,我们需要在 Spring Boot 应用类文件中加上 @EnableEurekaClient 注解。@EnableEurekaClient 注解可以使你的 Spring Boot 应用作为 Eureka 客户端。
主 Spring Boot 就用如下所示:
p
1 ackage com.tutorialspoint.eurekaclient; 2 3 import org.springframework.boot.SpringApplication; 4 import org.springframework.boot.autoconfigure.SpringBootApplication; 5 import org.springframework.cloud.netflix.eureka.EnableEurekaClient; 6 7 @SpringBootApplication 8 @EnableEurekaClient 9 public class EurekaclientApplication { 10 public static void main(String[] args) { 11 SpringApplication.run(EurekaclientApplication.class, args); 12 } 13 }
要注册 Spring Boot 应用到 Eureka 服务器中,我们要加上以下配置到 application.properties 或 application.yml 文件,并指定 Eureka 服务器的 URL。
application.yml 文件的代码如下:
eureka:
client:
serviceUrl:
defaultZone: http://localhost:8761/eureka
instance:
preferIpAddress: true
spring:
application:
name: eurekaclient
application.properties 文件的代码如下:
eureka.client.serviceUrl.defaultZone = http://localhost:8761/eureka eureka.client.instance.preferIpAddress = true spring.application.name = eurekaclient
现在,在主 Spring Boot 应用中加上 Rest 端点以返回字符串,在构建配置文件中要加上相应的应用描述。示例代码如下:
1 package com.tutorialspoint.eurekaclient; 2 3 import org.springframework.boot.SpringApplication; 4 import org.springframework.boot.autoconfigure.SpringBootApplication; 5 import org.springframework.cloud.netflix.eureka.EnableEurekaClient; 6 import org.springframework.web.bind.annotation.RequestMapping; 7 import org.springframework.web.bind.annotation.RestController; 8 9 @SpringBootApplication 10 @EnableEurekaClient 11 @RestController 12 public class EurekaclientApplication { 13 public static void main(String[] args) { 14 SpringApplication.run(EurekaclientApplication.class, args); 15 } 16 @RequestMapping(value = "/") 17 public String home() { 18 return "Eureka Client application"; 19 } 20 }
整个配置文件如下:
Maven - pom.xml
1 <?xml version = "1.0" encoding = "UTF-8"?> 2 <project xmlns = "http://maven.apache.org/POM/4.0.0" 3 xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" 4 xsi:schemaLocation = "http://maven.apache.org/POM/4.0.0 5 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 6 7 <modelVersion>4.0.0</modelVersion> 8 <groupId>com.tutorialspoint</groupId> 9 <artifactId>eurekaclient</artifactId> 10 <version>0.0.1-SNAPSHOT</version> 11 <packaging>jar</packaging> 12 13 <name>eurekaclient</name> 14 <description>Demo project for Spring Boot</description> 15 16 <parent> 17 <groupId>org.springframework.boot</groupId> 18 <artifactId>spring-boot-starter-parent</artifactId> 19 <version>1.5.9.RELEASE</version> 20 <relativePath/> <!-- lookup parent from repository --> 21 </parent> 22 23 <properties> 24 <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 25 <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> 26 <java.version>1.8</java.version> 27 <spring-cloud.version>Edgware.RELEASE</spring-cloud.version> 28 </properties> 29 30 <dependencies> 31 <dependency> 32 <groupId>org.springframework.cloud</groupId> 33 <artifactId>spring-cloud-starter-eureka</artifactId> 34 </dependency> 35 <dependency> 36 <groupId>org.springframework.boot</groupId> 37 <artifactId>spring-boot-starter-web</artifactId> 38 </dependency> 39 <dependency> 40 <groupId>org.springframework.boot</groupId> 41 <artifactId>spring-boot-starter-test</artifactId> 42 <scope>test</scope> 43 </dependency> 44 </dependencies> 45 46 <dependencyManagement> 47 <dependencies> 48 <dependency> 49 <groupId>org.springframework.cloud</groupId> 50 <artifactId>spring-cloud-dependencies</artifactId> 51 <version>${spring-cloud.version}</version> 52 <type>pom</type> 53 <scope>import</scope> 54 </dependency> 55 </dependencies> 56 </dependencyManagement> 57 58 <build> 59 <plugins> 60 <plugin> 61 <groupId>org.springframework.boot</groupId> 62 <artifactId>spring-boot-maven-plugin</artifactId> 63 </plugin> 64 </plugins> 65 </build> 66 67 </project>
Gradle - build.gradle
buildscript { ext { springBootVersion = '1.5.9.RELEASE' } repositories { mavenCentral() } dependencies { classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}") } } apply plugin: 'java' apply plugin: 'eclipse' apply plugin: 'org.springframework.boot' group = 'com.tutorialspoint' version = '0.0.1-SNAPSHOT' sourceCompatibility = 1.8 repositories { mavenCentral() } ext { springCloudVersion = 'Edgware.RELEASE' } dependencies { compile('org.springframework.cloud:spring-cloud-starter-eureka') testCompile('org.springframework.boot:spring-boot-starter-test') compile('org.springframework.boot:spring-boot-starter-web') } dependencyManagement { imports { mavenBom "org.springframework.cloud:spring-cloud-dependencies:${springCloudVersion}" } }
你可以使用 Maven 或 Gradle 命令创建可执行 executable JAR 文件并运行 Spring Boot 应用:
Maven 命令如下:
mvn clean install
在 “BUILD SUCCESS” 之后,你可以在 target 目录下找到 JAR 文件。
Gradle 可以使用以下命令:
gradle clean build
在 “BUILD SUCCESSFUL” 之后,你可以在 build/libs 目录下找到 JAR 文件。
使用以下命令运行 JAR 文件:
java –jar <JARFILE>
现在,应用已经在 Tomcat 8080 端口启动,且 Eureka 客户端应用已经被注册到 Eureka 服务器,如下所示:

在 Web 浏览器中输入 URL http://localhost:8761/,可以看到 Eureka 客户端应用已经被注册到 Eureka 服务器。

在 Web 浏览器中输入 URL http://localhost:8080/,可以看到 Rest 端点输出。


浙公网安备 33010602011771号