百字解释:
通常,我们会使用springboot创建服务端程序,开发一些REST接口供客户端调用。当其中有些接口或者服务需要分布式,实现高并发的时候,我们就需要把这些服务独立出来。随之也就带来注册、管理、发现这些服务的框架。Springcloud就是其中最常见的一种。
TALK IS CHEAP SHOW YOU THE CODE.
- 下载STS4.7.2开发平台。
- 使用STS创建Spring Starter Project,选择Spring Boot Version:2.3.4,组件选择Cloud Bootstrap,Spring Web,点击Finish。等待工程更新,下载初始项目。
- 我们需要创建服务注册、服务提供、服务消费三个项目。使用步骤2再创建2个工程。
- 我们选择其中一个工程,打开pom.xml进行服务注册项目的配置。使用eureka-server。
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
<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>
- 完整的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 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.3.4.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.example</groupId>
<artifactId>demo2-2</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>demo2-2</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
<spring-cloud.version>Hoxton.SR8</spring-cloud.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</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>
- 在src/main/java目录创建application.yml配置文件。输入配置内容。
server:
port: 8010
spring:
application:
name: eureka-server
eureka:
#指定主机名称
instance:
hostname: 127.0.0.1
client:
#由于自己就是服务器,不需要注册到自己
register-with-eureka: false
#由于自己就是服务器,不需要从服务器获取注册信息
fetch-registry: false
#服务地址
service-url:
defaultZone: http://127.0.0.1:8010/eureka/
- 打开工程主文件,在src/main/java,你的主包中,末尾以"Application.java"结尾的文件。添加@EnableEurekaServer标注这个工程为eureka server。导入相应的包org.springframework.cloud.netflix.eureka.server.EnableEurekaServer。
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;
@EnableEurekaServer
- 完整代码。(我的项目是demo22,所以class名为Demo22Application。注意自己的项目名字是不同的。)
package com.example.demo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;
@SpringBootApplication
@EnableEurekaServer
public class Demo22Application {
public static void main(String[] args) {
SpringApplication.run(Demo22Application.class, args);
}
}
- 右键项目,Run As Spring Boot App启动服务项目。控制台打印无错,启动成功。
- 根据我们yml文件的配置,打开浏览器输入http://127.0.0.1:8010/。如下图,服务注册启动成功。