Springcloud学习笔记(二)
程序员文章站
2022-03-20 11:18:20
...
上回在springcloud学习笔记(一)中我们演示了如何搭建eureka注册中心和网关,今天我们借着老A的项目接着演示用户微服务和配置微服务。用户微服务就是用来模拟真实开发环境中的具体业务服务,配置微服务则是用来统一管理每个微服务的启动文件的。
一:用户微服务搭建
第一步是在ag-parent父工程中新建一个子工程取名ag-uc,接下来还是之前的套路,搭建一个微服务的三个步骤:导入依赖文件,修改配置文件以及编写启动类。
用户微服务(亦即普通微服务)的依赖文件如下:
<?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">
<parent>
<artifactId>ag-parent</artifactId>
<groupId>com.github.wxiaoqi.learning</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>ag-uc</artifactId>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-client</artifactId>
</dependency>
</dependencies>
</project>
修改配置文件:application.yml
spring:
application:
name: user-center
eureka:
client:
service-url:
defaultZone: http://localhost:8761/eureka
server:
port: 7771
配置文件中只需要填写以上基本的属性配置就能启动成功。
最后一步是编写启动类UserCenterBootstrap启动类:
package com.github.wxiaoqi.learning.uc;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
/**
* <pre>
* author : lpf
* time : 2017/10/2922:21
* desc : 输入描述
* </pre>
*/
@SpringBootApplication
@EnableEurekaClient
public class UseCenterBootstrap {
public static void main(String[] args) {
SpringApplication.run(UseCenterBootstrap.class,args);
}
}
到这里,用户微服务就搭建完成并且可以正常启动了,下面我们再写一个测试接口来模拟请求用户微服务的数据。
新建一个Controller取名UserRest,内容如下:
package com.github.wxiaoqi.learning.uc.rest;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* <pre>
* author : lpf
* time : 2017/10/3020:29
* desc : 输入描述
* </pre>
*/
@RestController
@RequestMapping("user")
public class UserRest {
@RequestMapping("/{id}")
public String getUserInfo(@PathVariable String id){
return "接口访问成功";
}
}
接下来我们就可以通过网关访问用户微服务的接口了,如下图:
如果有不明白请求的链接为什么是http://localhost:8765/api/uc/user/1,可以看我上一篇关于网关的路由分发配置,相信看完之后就会明白为什么是/api/uc打头的路径了。
二:配置中心微服务搭建
到这里就该演示如何搭建一个配置服务了,搭建的基本思路不变,只是部分配置和之前有些不同。
依赖文件:
<?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">
<parent>
<artifactId>ag-parent</artifactId>
<groupId>com.github.wxiaoqi.learning</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>ag-config</artifactId>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-server</artifactId>
</dependency>
</dependencies>
</project>
配置文件:
spring:
application:
name: ag-config
cloud:
config:
server:
git:
uri: https://git.oschina.net/geek_qi/AG-Config.git
eureka:
client:
service-url:
defaultZone: http://localhost:8761/eureka
server:
port: 8750
在配置文件中除了要定义端口,注册到eureka上,给服务起名外,还要配置configserver的git地址,该地址表示配置文件存放的网址。
配置微服务启动类:
package com.github.wxiaoqi.learning.config;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.config.server.EnableConfigServer;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
/**
* <pre>
* author : lpf
* time : 2017/10/2922:21
* desc : 输入描述
* </pre>
*/
@SpringBootApplication
@EnableEurekaClient
@EnableConfigServer
@EnableAutoConfiguration
public class ConfigServerBootstrap {
public static void main(String[] args) {
SpringApplication.run(ConfigServerBootstrap.class,args);
}
}
接下来我们来演示如何获取config微服务中的配置文件数据,我们还是用user微服务来演示,首先要在user微服务中新建一个bootstrap.yml文件,在该文件中填写需要从config微服务获取内容的具体信息。bootstrap文件内容如下:
spring:
cloud:
config:
discovery:
service-id: ag-config
enabled: true
label: master # git 分支
name: uc
profile: dev
上面这段文字说明表示user微服务将从ag-config这个微服务中读取配置文件的内容,即从master分支上读取名称是uc且后缀为dev的配置文件。至于这里为什么要新建bootstrap文件填写配置信息而不在application配置文件中填写,这里没有明显的区别。只是大家需要知道bootstrap.yml要比application.yml文件先加载,并且bootstrap.yml文件会覆盖application.yml中相同属性的内容(如果有的话)。所以bootstrap.yml文件中通常都会配置一些固定的数据,比如配置文件的读取方式以及加解密信息。
最后我们再改造一下用户微服务的接口打印出配置文件中的内容,先看一下配置文件中的内容:
改造用户微服务的接口:
package com.github.wxiaoqi.learning.uc.rest;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* <pre>
* author : lpf
* time : 2017/10/3020:29
* desc : 输入描述
* </pre>
*/
@RestController
@RequestMapping("user")
public class UserRest {
@Value("${language.en}")
private String hello;
@RequestMapping("/{id}")
public String getUserInfo(@PathVariable String id){
return hello;
}
}
使用postman来请求接口:
到这里我们已经把配置微服务和用户微服务搭建完成,并演示了接口调用以及从配置服务中读取内容的过程。整个springcloud的脚手架基本搭建完成,后续任务就是一步一步填充这个框架,使其更加丰满。
上一篇: Python 相关方便小技巧
下一篇: 有关UUIDs的文章推荐5篇