[目录]
参考
本文参考了 Ken 的博客。结合自己的实际操作过程写成。
开发环境
| 名称 | 版本 |
|---|---|
| 操作系统 | Windows 10 X64 |
| JDK | JDK1.8(jdk-8u151-windows-x64) |
| IntelliJ IDEA | IntelliJ IDEA 2018.3 |
| Maven | Maven 3.6.0 |
| Spring Boot | 1.5.6 |
| Spring Cloud | Finchley.BUILD-SNAPSHOT |
源代码
见附件
什么是 Eureka
Eureka 是 Netflix 开源的服务注册与发现框架,Eureka 由两个组件组成:Eureka 服务器 和 Eureka 客户端。
Eureka Server 提供服务注册服务,各个节点启动后,会在 Eureka Server 中进行注册,这样 EurekaServer 中的服务注册表中将会存储所有可用服务节点的信息,服务节点的信息可以在界面中直观的看到。
Eureka客户端 是一个 Java 客户端,用来简化与服务器的交互、作为轮询负载均衡器,并提供服务的故障切换支持。
搭建 Eureka Server
1.创建项目
打开 IntelliJ IDEA 2018.3
选择 创建新项目

或 文件-New-项目

选择 Maven,勾选 Create from archetype
选择项目模板 maven-archtype-quickstart

GroupId:my.luoma.springcloud.testeurekaserver
ArtifactId:testeurekaserver

设置 Maven 配置
| 名称 | 说明 | 配置 |
|---|---|---|
| Maven Home Directory | Maven 安装包路径 | D:\Program Files\apache-maven-3.6.0 |
| User settings file | 用户配置文件 | D:\Program Files\apache-maven-3.6.0\conf\settings.xml |
| Local repository | 本地仓库 | D:\Program Files\Maven\Repository |

项目名称 testeurekaserver

2.创建源目录
在 src/main 下创建文件夹 resources

右键 java 文件夹,标记目录为-源码 根
右键 resources 文件夹,标记目录为-Resources 根

在 resources 文件夹下创建 application.yml 文件并配置Eureka Server
application.yml 内容如下
server:port: 8800spring:application:name: EurekaServereureka:client:registerWithEureka: falsefetchRegistry: falseserviceUrl:defaultZone: http://localhost:${server.port}/eureka/
3.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>my.luoma.springcloud.testeurekaserver</groupId><artifactId>testeurekaserver</artifactId><version>1.0-SNAPSHOT</version><name>testeurekaserver</name><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><maven.compiler.source>1.8</maven.compiler.source><maven.compiler.target>1.8</maven.compiler.target></properties><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.0.0.RELEASE</version></parent><dependencyManagement><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>Finchley.BUILD-SNAPSHOT</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-server</artifactId></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.11</version><scope>test</scope></dependency></dependencies><repositories><repository><id>spring-snapshots</id><name>Spring Snapshots</name><url>https://repo.spring.io/libs-snapshot</url><snapshots><enabled>true</enabled></snapshots></repository></repositories><build><finalName>testeurekaserver</finalName></build></project>
4.配置 EurekaServer 启动类
修改\src\main\java\my\luoma\springcloud\testeurekaserver\App.java
基于 Spring Boot 创建启动类,添加上 @EnableEurekaServer 注解
package my.luoma.springcloud.testeurekaserver;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;/*** Hello world!**/@EnableEurekaServer@SpringBootApplicationpublic class App{public static void main( String[] args ){SpringApplication.run(App.class, args);}}
5.Eureka Server信息预览
启动Eureka Server项目后,访问:http://localhost:8800/ ,可以看到下面的页面,其中还没有发现任何服务。

6.无法解析符号
无法解析符号 EnableEurekaServer无法解析符号 SpringBootApplication信息:java: Errors occurred while compiling module 'eurekaserver'信息:javac 1.8.0_151 was used to compile java sources信息:2019/7/29 9:44 - 编译完成有 3 个错误 和 0 个警告 in 7 s 13 msD:\v_hwhao\Code-Java-Test\eurekaserver\src\main\java\my\luoma\springcloud\eurekaserver\App.java错误:(9, 2) java: 找不到符号符号: 类 EnableEurekaServer错误:(10, 2) java: 找不到符号符号: 类 SpringBootApplication错误:(15, 9) java: 找不到符号符号: 变量 SpringApplication位置: 类 my.luoma.springcloud.eurekaserver.App



我之前创建了一个项目叫 eurekaserver,编译时报错,其他的代码和配置都是完全一样的,但就报这个错误,我想了半天,发现问题可能出现在 Maven 的配置这里

我一开始创建项目的时候,这里我并没有填写上面的内容,而是使用默认的,就是下图的内容

就是没有配置 Maven 的地址导致找不到对应的包,所以以后遇到这个错误可以参考下这个解决办法。
搭建服务并注册(Eureka Client)
1.创建 Eureka Client 项目
文件-New-项目

选择 Maven,勾选 Create from archetype
选择项目模板 maven-archtype-quickstart

GroupId:my.luoma.springcloud.helloservice
ArtifactId:helloservice

设置 Maven 配置
| 名称 | 说明 | 配置 |
|---|---|---|
| Maven Home Directory | Maven 安装包路径 | D:\Program Files\apache-maven-3.6.0 |
| User settings file | 用户配置文件 | D:\Program Files\apache-maven-3.6.0\conf\settings.xml |
| Local repository | 本地仓库 | D:\Program Files\Maven\Repository |

项目名称 helloservice

2.配置 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>my.luoma.springcloud.helloservice</groupId><artifactId>helloservice</artifactId><version>1.0-SNAPSHOT</version><name>helloservice</name><url>http://luoma.pro</url><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><maven.compiler.source>1.8</maven.compiler.source><maven.compiler.target>1.8</maven.compiler.target></properties><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.0.0.RELEASE</version></parent><dependencyManagement><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>Finchley.BUILD-SNAPSHOT</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-client</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.11</version><scope>test</scope></dependency></dependencies><repositories><repository><id>spring-snapshots</id><name>Spring Snapshots</name><url>https://repo.spring.io/libs-snapshot</url><snapshots><enabled>true</enabled></snapshots></repository></repositories><build><finalName>helloservice</finalName></build></project>
3.配置Eureka Client启动类
修改\src\main\java\my\luoma\springcloud\helloservice\App.java
基于Spring Boot创建启动类,添加上 @EnableDiscoveryClient 注解
package my.luoma.springcloud.helloservice;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.cloud.client.discovery.EnableDiscoveryClient;@EnableDiscoveryClient@SpringBootApplicationpublic class App {public static void main(String[] args) {SpringApplication.run(App.class, args);}}
4.创建测试服务
在 \src\main\java\my\luoma\springcloud\helloservice 创建package:controller
然后创建 HelloController.java
package my.luoma.springcloud.helloservice.controller;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.cloud.client.discovery.DiscoveryClient;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;@RestControllerpublic class HelloController {@AutowiredDiscoveryClient discoveryClient;@RequestMapping("/")public Object index() {return "老大哥 Java ";}@RequestMapping("/info")public Object info() {return discoveryClient.getServices();}}
5.配置Eureka Client
在 \src\main 下创建文件夹 resources 文件夹并设置为Resources Root

在 resources 文件夹下创建 application.yml 文件并配置 Eureka Client
server:port: 8601spring:application:name: helloserviceeureka:client:serviceUrl:defaultZone: http://localhost:8800/eureka/
6.服务注册&访问测试
HelloService项目成功启动后,
查看是否正常启动

查看服务是否注册
访问 http://localhost:8800 ,会发现服务已注册
