SpringCloud【三】基于eureka+config创建client提供服务接口
eureka服务中心搭建:https://blog.****.net/Yu_uuuuu/article/details/82223790
config配置中心搭建:https://blog.****.net/Yu_uuuuu/article/details/82351266
当前项目GIT:https://github.com/yukaiji/springcloud-client
之前已经搭建好了注册管理中心eureka-server和配置管理中心config-server。
接下来就是基于这两个搭建一个提供对外服务接口的client。
首先创建一个名字为spring-cloud-client的工程。
工程的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.0http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.kaijiyu</groupId>
<artifactId>spring-cloud-client</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>spring-cloud-client</name>
<description>Demo project for Spring Boot</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.4.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>Finchley.SR1</spring-cloud.version>
<maven.compiler.plugin.version>3.7.0</maven.compiler.plugin.version>
<maven.archetype.plugin.version>3.0.1</maven.archetype.plugin.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-client</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</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>
<!-- 自动注入配置文件插件 可以不用 -->
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
<!-- 自定义环境属性变量 可以不用-->
<profiles>
<profile>
<!-- 测试环境 -->
<id>test</id>
<properties>
<spring.cloud.config.profile>test</spring.cloud.config.profile>
<spring.cloud.config.label>master</spring.cloud.config.label>
<spring.cloud.config.uri>http://localhost:9001</spring.cloud.config.uri>
</properties>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
</profile>
<profile>
<!-- 开发环境 -->
<id>dev</id>
<properties>
<spring.cloud.config.profile>dev</spring.cloud.config.profile>
<spring.cloud.config.label>master</spring.cloud.config.label>
<spring.cloud.config.uri>http://localhost:9001</spring.cloud.config.uri>
</properties>
</profile>
<profile>
<!-- 生产环境 -->
<id>pro</id>
<properties>
<spring.cloud.config.profile>pro</spring.cloud.config.profile>
<spring.cloud.config.label>master</spring.cloud.config.label>
<spring.cloud.config.uri>http://localhost:9001</spring.cloud.config.uri>
</properties>
</profile>
</profiles>
</project>
其中最主要的是eureka和config的配置。这两个配置使我们能够连接远程配置中心和注册到eureka服务中心。
然后在resources目录下创建一个配置文件叫做bootstrap.yml这里放我们整个微服务的基本配置。application.yml则放在远程配置中心读取。
#指定配置中心的uri之后,配置中心根据 /{label}/{application}-{profile}.yml 定位到唯一配置文件
spring.application.name: spring-cloud-client
# 测试环境
# 通过POM文件当中的profiles标签属性控制
#{profile}为环境变量,一般有 dev,test,pro三类
spring.cloud.config.profile: test
#{label}为gitlab分支名,例如: master(主分支),个人分支等
spring.cloud.config.label: master
#{application}为以下配置的spring.application.name,应用名请使用统一的前缀
spring.cloud.config.uri: http://localhost:9001
server.port: 5001
配置完毕之后。我们当前有三个服务分别为:
eurekaserver:1111 - eureka服务注册中心 ( eurekaserver这个域名是当时在本地hosts配置的)
localhost:9001 - config配置中心服务
localhost:5001 - client服务端,用来提供接口服务
接下来首先启动eureka服务和config服务,最后启动client服务。然后我们观察到服务已经注册到了eureka上。
这里要注意,client服务的spring.application.name和git上配置文件的名称前缀要一致,否则读不到配置文件。
然后我们来测试一下读取远程配置中心自定义的配置属性。
在配置中心我们配置了一个名叫from的属性:
我们现在写一个controller,提供一个接口,返回这个属性。
编写一个controller类。使用@RestController注解表明这是一个controller类。
使用@Value注解获取配置文件的属性。
package com.kaijiyu.eurekaclient.controller;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@RestController
public class HelloController {
@Value("${from}")
private String from;
@RequestMapping(value = "/hello" , method = RequestMethod.GET)
public String hello(HttpServletRequest request, HttpServletResponse response){
return from;
}
}
写好之后,我们尝试访问这个接口,成功。这就是一个简单的采用eureka和config的微服务。