在此之前,我们已经搭建了一个Eureka-Server服务:
从零搭建springcloud(一)注册中心 Eureka-Server (F版本)
Eureka-Server已经将各个微服务之间关联起来。现在我们来搭建Eureka-Client服务。
现在来搭建第一个Eureka-Client服务:生产者。
由于使用IDEA自带的springboot创建工具经常卡住,所以这次来介绍另一种方式。
进入 Spring Initializr 中
配置如下参数
然后它会自动下载创建好的springboot项目
解压并导入
选择maven项目。next。
将jdk修改为1.8
修改为java8版本,点击ok
目录结构如下。
具体内容及原因如下:
<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.3.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.yang</groupId>
<artifactId>springcloud-eureka-service</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>springcloud-eureka-service</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<!--引入test starter 包括junit、assertj等依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
</dependency>
<!--引入eureka-client依赖,表明这是一个eureka-client服务-->
<!--
注意:在springcloud F版本后,
Spring Boot 1.5.x 升级为 Spring Boot 2.0.x
Spring Cloud Edgware SR4 => Spring Cloud Finchley.RELEASE
依赖也由
spring-cloud-starter-eureka-client
升级为
spring-cloud-starter-netflix-eureka-client
-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<!--引入web-starter,他表示web的场景,自动帮我们引入了web模块开发需要的相关jar包-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
<!--引入springcloud的配置管理,按住Ctrl+左键单击artifactId可以查看其中具体的组件版本-->
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<!--指定springcloud版本为Finchley.RELEASE-->
<version>Finchley.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<build>
<plugins>
<!--引入maven插件-->
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
与第一期相同,重命名为application.yml文件。
配置文件内容如下:
#指定生产者服务启动的端口号
server:
port: 8704
eureka:
#定义主机名称
instance:
hostname: localhost
#下面为eureka客户端的配置信息
client:
#指定注册中心的路径
service-url:
defaultZone: http://${eureka.instance.hostname}:8700/eureka/
#定义这个服务的名字
spring:
application:
name: eureka-service
进入启动类
在启动类上添加注解@EnableDiscoveryClient
在此解释一下这个注解的作用,类似于spring容器对bean的管理,添加@EnableDiscoveryClient注解后,这个服务就可以被注册中心扫描到,并注册到Eureka-Server中
代码如下
package com.yang.springcloudeurekaservice;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
@SpringBootApplication
@EnableDiscoveryClient
public class SpringcloudEurekaServiceApplication {
public static void main(String[] args) {
SpringApplication.run(SpringcloudEurekaServiceApplication.class, args);
}
}
首先启动eureka-server服务
启动成功后,启动eureka-service服务。
打开注册中心 http://localhost:8700/
可以看到我们的eureka-service服务已经注册到eureka-server中了。
创建→解压→导入→配置文件过程同上,在此不在重复。
取名为springcloud-eureka-consume
如下:
<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.3.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.yang</groupId>
<artifactId>springcloud-eureka-consume</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>springcloud-eureka-consume</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<!--引入test starter 包括junit、assertj等依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
</dependency>
<!--引入eureka-client依赖-->
<!--
注意:在springcloud F版本后,
Spring Boot 1.5.x 升级为 Spring Boot 2.0.x
Spring Cloud Edgware SR4 => Spring Cloud Finchley.RELEASE
依赖也由
spring-cloud-starter-eureka-client
升级为
spring-cloud-starter-netflix-eureka-client
-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<!--引入web-starter,他表示web的场景,自动帮我们引入了web模块开发需要的相关jar包-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
<!--引入springcloud的配置管理,按住Ctrl+左键单击artifactId可以查看其中具体的组件版本-->
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<!--指定springcloud版本为Finchley.RELEASE-->
<version>Finchley.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<build>
<plugins>
<!--引入maven插件-->
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
application中,启动端口设置为8801.
如下:
#指定生产者服务启动的端口号
server:
port: 8801
eureka:
#定义主机名称
instance:
hostname: localhost
#下面为eureka客户端的配置信息
client:
#指定注册中心的路径
service-url:
defaultZone: http://${eureka.instance.hostname}:8700/eureka/
#定义这个服务的名字
spring:
application:
name: eureka-consume
同上
可以看到eureka-consume服务也已经注册到eureka-server中
关于如何在微服务之间通信,请看下一篇博客
从零搭建springcloud(三)服务提供与调用 Feign 、 RestTemplate