大一微服务刚刚入门总结

30 阅读2分钟

1,微服务相当于有多个子项目加上一个类似于神经中枢组成的大体项目(各个项目可以进行独立开发) 2,一般来说微服务的基本的集群有eureka,order,user,product如果各个集群中有相互连通model一般要定义到另外的一个集群中common 如果各个集群想要用common的中model类需要在pom文件中导入 org.example common 1.0-SNAPSHOT compile 3,eureka这个相当于一个神经中枢 test1-->eureka tset2-->eureka管理各个子项目 在启动类方面于其他的不同的是要在启动类上额外的添加@EnableEurekaServer注解,开启注册中心的功能 4,哪么如何进行各个集群之间的相互调用呢
通过service 如果在a集群要调用b集群 我们要在a子项目中创建一个service接口去调用b子项目的方法 中间我们要用的一个技术rpc进行调用 我们先创建一个接口给接口加上@FeignClient("这个就是b子项目的名字") 在接口中的方法都是在b项目的方法,在a中b项目的接口方法注解中的地址都应该相同(原因是feign框架首先读取frignclient中的配置的服务器)根据服务名去注册中心获取ip和端口 然后再读取GetMapping或者是PostMapping中的最后把ip 端口 地址进行拼接 组成完整的http请求路径 5,对于b项目中不同类型的方法处理方式也是不同的 首先GET:仅用 @RequestParam 或 @PathVariable。 POST/PUT:根据需求组合使用 @RequestParam(简单参数) + @RequestBody(主体数据) 1,对于get不传参就基本没有改变 2对于get方法传递简单的参数要加上@RequestParam 如果不加会报400错误,没有找到post请求(可明明是get请求 )Spring会尝试从三个位置查找参数: URL查询字符串(?a=123) 表单数据(Content-Type: application/x-www-form-urlencoded) 路径变量(/test2/{a}) GET请求没有请求体,表单数据位置为空 → 参数绑定失败 → 400错误 3get方法参数是复杂的请求体 是不会接收到的原因是URL 无法承载复杂数据,且框架不支持自动映射 4,post方法接受接收 JSON/XML 请求体 @RequestBody 告诉 Spring:"请从 HTTP 请求的 Body 中提取数据,并转换成指定的 Java 对象"。 没有它时,Spring 默认会尝试从 URL 参数(@RequestParam)或路径变量(@PathVariable)或从 表单提交 中获取数据中获取数据,而不会读取请求体。所以此时接收不到参数
方法调用测试 image.png
大体结构
image.png
接口调用测试

image.png

image.png