使用 Eureka 注冊服務(wù)
【注】本文譯自:https://www.tutorialspoint.com/spring_boot/spring_boot_service_registration_with_eureka.htm

? ? 本文將帶你深入學(xué)習(xí)如何將 Spring Boot 微服務(wù)應(yīng)用注冊到 Eureka 服務(wù)器中。在注冊應(yīng)用前,請確保 Eureka Server 已經(jīng)運行在 8761 端口或者先構(gòu)建 Eureka 服務(wù)器并運行起來。有關(guān)搭建 Eureka 服務(wù)器的信息,可以參考本系列教程的相關(guān)部分。
? ?首先,你需要在構(gòu)建配置文件中加入以下依賴,以注冊微服務(wù)到?Eureka 服務(wù)器。
? ?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')
? ?現(xiàn)在,我們需要在 Spring Boot 應(yīng)用類文件中加上 @EnableEurekaClient 注解。@EnableEurekaClient 注解可以使你的 Spring Boot 應(yīng)用作為 Eureka 客戶端。
? ?主 Spring Boot 就用如下所示:
package?com.tutorialspoint.eurekaclient;
import?org.springframework.boot.SpringApplication;
import?org.springframework.boot.autoconfigure.SpringBootApplication;
import?org.springframework.cloud.netflix.eureka.EnableEurekaClient;
@SpringBootApplication
@EnableEurekaClient
public?class?EurekaclientApplication?{
???public?static?void?main(String[]?args)?{
??????SpringApplication.run(EurekaclientApplication.class,?args);
???}
}
? ?要注冊?Spring Boot 應(yīng)用到 Eureka 服務(wù)器中,我們要加上以下配置到 application.properties 或 application.yml 文件,并指定 Eureka 服務(wù)器的 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
? ?現(xiàn)在,在主?Spring Boot 應(yīng)用中加上?Rest 端點以返回字符串,在構(gòu)建配置文件中要加上相應(yīng)的應(yīng)用描述。示例代碼如下:
package?com.tutorialspoint.eurekaclient;
import?org.springframework.boot.SpringApplication;
import?org.springframework.boot.autoconfigure.SpringBootApplication;
import?org.springframework.cloud.netflix.eureka.EnableEurekaClient;
import?org.springframework.web.bind.annotation.RequestMapping;
import?org.springframework.web.bind.annotation.RestController;
@SpringBootApplication
@EnableEurekaClient
@RestController
public?class?EurekaclientApplication?{
???public?static?void?main(String[]?args)?{
??????SpringApplication.run(EurekaclientApplication.class,?args);
???}
???@RequestMapping(value?=?"/")
???public?String?home()?{
??????return?"Eureka?Client?application";
???}
}
? ?整個配置文件如下:
? ?Maven - pom.xml
<?xml?version?=?"1.0"?encoding?=?"UTF-8"?>
<project?xmlns?=?"http://maven.apache.org/POM/4.0.0"?
???xmlns:xsi?=?"http://www.w3.org/2001/XMLSchema-instance"
???xsi:schemaLocation?=?"http://maven.apache.org/POM/4.0.0?
???http://maven.apache.org/xsd/maven-4.0.0.xsd">
???
???<modelVersion>4.0.0</modelVersion>
???<groupId>com.tutorialspoint</groupId>
???<artifactId>eurekaclient</artifactId>
???<version>0.0.1-SNAPSHOT</version>
???<packaging>jar</packaging>
???<name>eurekaclient</name>
???<description>Demo?project?for?Spring?Boot</description>
???<parent>
??????<groupId>org.springframework.boot</groupId>
??????<artifactId>spring-boot-starter-parent</artifactId>
??????<version>1.5.9.RELEASE</version>
??????<relativePath/>?<!--?lookup?parent?from?repository?-->
???</parent>
???<properties>
??????<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
??????<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
??????<java.version>1.8</java.version>
??????<spring-cloud.version>Edgware.RELEASE</spring-cloud.version>
???</properties>
???<dependencies>
??????<dependency>
?????????<groupId>org.springframework.cloud</groupId>
?????????<artifactId>spring-cloud-starter-eureka</artifactId>
??????</dependency>
??????<dependency>
?????????<groupId>org.springframework.boot</groupId>
?????????<artifactId>spring-boot-starter-web</artifactId>
??????</dependency>
??????<dependency>
?????????<groupId>org.springframework.boot</groupId>
?????????<artifactId>spring-boot-starter-test</artifactId>
?????????<scope>test</scope>
??????</dependency>
???</dependencies>
???
???<dependencyManagement>
??????<dependencies>
?????????<dependency>
????????????<groupId>org.springframework.cloud</groupId>
????????????<artifactId>spring-cloud-dependencies</artifactId>
????????????<version>${spring-cloud.version}</version>
????????????<type>pom</type>
????????????<scope>import</scope>
?????????</dependency>
??????</dependencies>
???</dependencyManagement>
???
???<build>
??????<plugins>
?????????<plugin>
????????????<groupId>org.springframework.boot</groupId>
????????????<artifactId>spring-boot-maven-plugin</artifactId>
?????????</plugin>
??????</plugins>???
???</build>
???
</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 命令創(chuàng)建可執(zhí)行?executable JAR 文件并運行 Spring Boot 應(yīng)用:
?? ?Maven 命令如下:
mvn?clean?install
? ?在 “BUILD SUCCESS” 之后,你可以在 target 目錄下找到 JAR 文件。
?? ?Gradle 可以使用以下命令:
gradle?clean?build
?? ?在 “BUILD SUCCESSFUL” 之后,你可以在?build/libs 目錄下找到?JAR 文件。
?? ?使用以下命令運行 JAR 文件:
java?–jar?<JARFILE>?
?? ?現(xiàn)在,應(yīng)用已經(jīng)在 Tomcat 8080 端口啟動,且?Eureka 客戶端應(yīng)用已經(jīng)被注冊到 Eureka 服務(wù)器,如下所示:

? ?在 Web 瀏覽器中輸入 URL http://localhost:8761/,可以看到?Eureka 客戶端應(yīng)用已經(jīng)被注冊到 Eureka 服務(wù)器。

? ?在 Web 瀏覽器中輸入?URL?http://localhost:8080/,可以看到?Rest 端點輸出。