1. 创建注册中心register
启动类要加上@SpringBootApplication(是Sprnig Boot项目的核心注解,目的是开启自动配置)
和
@EnableEurekaServer(可以将@EnableEurekaServer 这个注解看作是一个开关,开启时,会激活相关配置,会作为注册中心。)
2. 创建配置中心,然后注册到注册中心里
启动类要加上@EnableDiscoveryClient(将微服务注册到服务发现组件上,能够让注册中心能够发现,扫描到改服务。)
和
@EnableConfigServer(在spring cloud项目中,都会配置一个配置中心去管理各个服务的配置文件,而往往配置文件不会放到本地配置中心,一般都会放到git上,配置中心从远程git读取配置文件)
3. 创建缓存模块
创建缓存模块也需要注册到配置中心
并且启动的时候需要从gitee获取yml文件,文件里有rabbitmq和redis启动ip,当启动缓存服务的时候
这两个服务也一起启动了
然后开始写serice层,要加注解@Service
创建一个service写上缓存中可能需要用到的各种集合的增删查改,比如set get delete等等
【
我们发现我们的接口返回的数据格式各不相同,有的可能没有数据,有的可能就一个数字,一个字符串,有的可能是复杂的数据格式
于是我们想办法进行抽取,将一致的数据进行封装,将不一致的数据向上查找共性进行抽取
比如我们约定所有的接口都有错误码和错误描述信息字段,但是呢有的接口 有数据,有的没有,所以我们可以封装一个对象,里面只包含错误码和描述信息
让后再写一个对象继承并添加数据,数据的格式不一致,但是都是object,但是也要注意,表示相同意思的字段名应该保持一致。
】
impl实现继承service并重写service的方法
然后写controller层,要加上注解@RestController(返回json数据需要@ResponseBody和@Controller配合,而@RestController就是他俩的组合;controller层就是调用增删改查的方法并加以修饰的,比如我改成功了,我会告诉客户什么信息等等
(我们学Java的知道,Java是一门面向对象的语言。无论在Java中出现什么,都可以认为它是对象(除了八大基本数据类型。当然了,八大基本数据类型也能装箱成为对象):
而Object就是这些对象的最高级别的,所有的Java对象都隐式地继承了Object对象(不用显式写extends继承)
所有的Java对象都拥有Object默认的方法。)
4. Feign远程调用服务
导入依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
启动类添加注解
@EnableFeignClients
在需要的接口上添加
@FeignClient("需要远程调用的已经注册到注册中心的服务的名称")
5. 如何把一个对象转成map
把对象转成json然后转成map
.readValue方法和writeValueAsString
objectMapper.readValue(objectMapper.writeValueAsString(对象),map.class)
6. 网关
网关需要做什么?
网关是作为开放平台的统一入口,所有的开放数据的服务都需要通过网关来进行调用,每个接口
可能需要一些自己的信息,每个接口可能需要不同的费用标准,有的收费有的免费,有的接口可能需要
认证,有的不需要,有的接口可能只在某个时间段开放,过了时间之后就关闭了,随着项目的发展,
我们会上线新的接口,下线一些接口,都是随机的,我们开放的接口越来越多,那么有没有办法进行统一的
映射呢?不能有1w个服务就有1w个反向代理的地址吧?
网关和缓存进行交互,各个地址是多少?难道需要人跑过去问问吗?接口文档怎么写?
7. 缓存中如何提供接口文档?可以提供一个在线的文档,swagger(接口文档的作用是把服务的地址暴露出去)
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.9.2</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.9.2</version>
</dependency>
</dependencies>
在启动类添加注解
@EnableSwagger2
然后需要做一些设置