SpringCloud入门学习(服务注册中心与服务篇)
一、服务注册中心的创建
- 首先创建一个空的maven工程,删掉src目录,具体过程我就不演示了,相信大家都会。如下:
- 前面也讲过,SpringCloud是基于SpringBoot的。所以,接下来创建一个SpringBoot模块:
然后选择Spring Initializr
,接着依赖选择:
- 注意修改SpringCloud版本,本文用的是
Finchley.RELEASE
,请和我保持版本一致,避免因为版本问题而导致项目无法启动。以下贴出我的registrycentry(服务注册中心)
模块的pom
文件依赖:
<?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>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.6.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.example</groupId>
<artifactId>registrycentry</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>registrycentry</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
<spring-cloud.version>Finchley.RELEASE</spring-cloud.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</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>
-
如果是第一次创建该工程,依赖加载会有点费时,耐心等待就行
创建并启动一个服务注册中心非常简单,只需按照以下步骤操作即可:
4.1 启动类添加注解@EnableEurekaServer
package com.example.registrycentry; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication @EnableEurekaServer //表示我是一个服务注册中心,任何服务都需要到服务注册中心进行注册 public class RegistrycentryApplication { public static void main(String[] args) { SpringApplication.run(RegistrycentryApplication.class, args); } }
4.2 配置文件进行如下配置:
server port:8761 #指定服务端口号 eureka: client: register-with-eureka: false #是否需要将自己注册到注册中心,因为该工程自己就是服务注册中心,所以无需注册。如果是多个服务注册中心集群模式,则另当别论 fetch-registry: false #是否向注册中心定时更新自己状态
ok,启动项目,然后访问
localhost:8761
可以看到,此时并没有服务进行注册。所以,接着,让我们创建几个服务吧!
二、服务创建并注册
-
同样的
new -> module -> Spring Initializr -> 依赖选择
如下:
再次强调,记得修改pom文件<spring-cloud.version>
修改前:<properties> <java.version>1.8</java.version> <spring-cloud.version>Greenwich.SR1</spring-cloud.version> </properties>
修改后:
<properties> <java.version>1.8</java.version> <spring-cloud.version>Finchley.RELEASE</spring-cloud.version> </properties>
之后的每个服务也要记得修改!!!
-
ok,创建一个服务,并将服务注册到服务注册中心,如下步骤操作即可:
2.1 启动类添加注解@EnableEurekaClient
package com.example.microservice01; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.netflix.eureka.EnableEurekaClient; @SpringBootApplication @EnableEurekaClient //表示我是一个服务,任何服务都是服务注册者也是服务调用者,都需要注册到服务注册中心 public class Microservice01Application { public static void main(String[] args) { SpringApplication.run(Microservice01Application.class, args); } }
2.2 配置文件进行如下配置:
server: port: 8081 #指定服务端口号 registrycentery: 8761 #服务注册中心端口号 spring: application: name: MicroService01 #服务名,服务名是唯一的,不同的服务名字不能重复 eureka: client: register-with-eureka: true #是否需要将自己注册到注册中心 fetch-registry: true #是否向注册中心定时更新自己状态 service-url: default-zone: http://localhost:${server.registrycentery}}/eureka/ #指定去哪个服务注册中心进行注册
启动项目,再去访问
localhost:8761
就会发现此时,已经有一个服务注册上去了,服务名为MICROSERVICE01
, 默认会将名字显示为全部大写。 -
接着,继续创建几个服务,步骤和上面是一样的,我就不再重复演示了。
并在此基础上,分别写一个简单的接口调用。启动服务,再次打开注册中心localhost:8761
可以看到我启动了3个服务:
SpringCloud服务注册中心与服务篇就到这里就结束啦 -> 本篇源码
下一篇我将介绍 -> SpringCloud整合Feign
实现服务之间的调用