spring could环境搭建 整理 基础版
一、创建父项目
创建一个maven 项目,删掉src 文件夹
二、创建 服务项目
需要做的配置
1)加上对应的注解
2)yml配置
- server 端口号
- eureka 配置
- 两个false register 和fetch
3)优先启动这个项目,让其他的服务来注册
三、创建 一个提供者项目(module)
创建的时候加入对应的依赖
1)yml配置
- 配置对应的 application 名称
- 配置数据库
- 配置mybatis
- 配置 eureka
2)代码结构
还在正常的 entity,mapper接口,service ,controller,xml
四、创建消费者项目(module)
1)yml 配置
- 端口号
- application name
- eureka配置
2)消费者的代码结构
- service接口
- service接口实现类
- feign 接口
- feign 接口的实现类(如果需要熔断之后的默认数据的话) 在 service接口实现类中调用 feign 接口
以上就完成了一个基本的spring could 的提供者消费者的配置
但是此刻开始,需要注意的 是各种参数的传递问题,笔者这个环节比较头大
参数的传递主要有两个环节
1)前端传参数给 消费者的 controller
2)消费者调用feign 接口,传参给 provider
遇到过的问题
1)controller 接收一个实体类对象,对象为null
2)controller 接收一个实体类对象,对象接收正常,但是 传递到feign 接口里面的时候,传递到provider 里面就不正常
可能的原因
注解使用不当
要么从 provider 到controller 全部不要使用注解(不要加@RequestParam,也不要加 @RequestBody),直接写对象
要么从 provider 到controller 全部使用注解@RequestParam,全部添加 @RequestParam,此时的参数使用 Map 接收,不要使用自定义的实体类对象
接收对象的时候全部使用 @RequestBody,但是需要指明 products
@PostMapping(value = “/addNewComment”,produces = {“application/json;charset=UTF-8”})
public ReturnUtil addNewComment(@RequestBody Comment comment){
。。。
}
这个方法需要前端做配合,需要前端传递过来是 json数据才可以
直接使用postman测试接口的时候
使用post方式,参数以json 的形式写在 body中
3)各种忘加必要的注解
消费者需要加注解
- 启动类上,使用了feign 接口需要加 @EnableEurekaClient @EnableFeignClients 消费者的
feign 接口 需要加下面的注解,来指定 提供者,这里就要求需要配置提供者的application name,需要保持一致,指定是哪一个
提供者 @FeignClient(value = “couldprovider”) - 如果需要熔断之后,启动默认的数据,调用默认的接口,需要添加fallback,指定feign接口的实现类即可,正常情况是请求provider的方法,熔断之后,会调用
feign 接口的实现类里面的方法 @FeignClient(value = “couldprovider”,fallback =
FeignPhoneServiceImpl.class)
提供者
- @EnableEurekaClient
注册中心需要加
- @EnableEurekaServer
4)注意 提供者方法的返回值类型
犯过一个错误,提供者的返回值类型是自定义的一个 ReturnUtil,里面封装了一个list
然后在消费者以为返回的是一个list类型,结果当然是调不通的