发表文章

[最新] springcloud的学习总结

jiming59680899 4月前 2

        前言:java初级小菜鸟,最近有个工作是将一个项目改造成微服务架构,自己学习了springcloud,将学习过程中的笔记和心得分享给大家,如果有理解不对的地方,大家可以评论留言,相互交流,学习。

一 概述:关于springboot,springcloud,微服务的一些概念

  • Spring Boot:

    • 优势:可以简化配置;

    • 核心思想:约定大于配置;

  • Spring Cloud:

    • 概念:是一系列框架的有序集合;基于spring boot简化了分布式系统基础设施的开发;

    • 核心功能:

      • 分布式/版本化配置;

      • 服务注册和发现;

      • 路由;

      • 服务和服务之间的调用;

      • 负载均衡;

      • 断路器;

      • 分布式消息传递;

    • 运行流程:

      • 组件:API网关(Zuul);注册中心(Eureka);负载均衡(Ribbon);通信(Feign);超时熔断(Hystrix);监控(Turbine)

      • 流程:请求-->zuul-->从Eureka获取可用服务-->Feign通信-->Ribbon负载均衡分发-->Hystrix超时熔断-->Turbine监控

  • 微服务,springcloud,springboot三者之间的关系:

    • 微服务是一种架构的理念,提出了微服务的设计原则,从理论为具体的技术落地提供了指导思想

    • Spring Boot是一套快速配置脚手架,可以基于Spring Boot快速开发单个微服务;

    • Spring Cloud是一个基于Spring Boot实现的服务治理工具包;

    • Spring Boot专注于快速、方便集成的单个微服务个体,Spring Cloud关注全局的服务治理框架;

  • dubbo和spring cloud:

    • 公司背景:dobbo--阿里巴巴,自身业务为主;spring boot/cloud--spring家族,企业级开源框架;

    • 活跃度:dobbo近两年未更新;spring boot/cloud很活跃;

    • 平台架构:dubbo框架只是专注于服务之间的治理;spring boot/cloud几乎考虑了服务治理的方方面面;

 二 spring boot/cloud项目中涉及的一些注解的总结分类

  • controller层:
    • 类注解:
      • @Controlller:
      • @RequestMapping:在类上定义请求路径;

      • @RestController:相当于@Controller和@Responsebody的组合,这个类的所有方法返回json;

    • 方法注解:

      • @PostMapping:相当于@RequestMapping(method="RequestMethod.POST")

      • @GetMapping:相当于@RequestMapping(method="RequestMethod.GET");

      • @RequestMapping:在方法上定义此方法的请求路径,如果类上也定义了,则为类路径+方法路径;

      • @GetMapping和@PostMapping的区别:同样一个方法实现,用@get定义和@post定义,用浏览器测试的时候@get能通过测试,而@post不能,因为浏览器地址栏访问都是采用get请求,因此如果以post定义方法,那么由于请求与实现的不一致,会返回405错误;

      • 当然还有@PutMapping、@DeleteMapping、@PatchMapping等注解帮助简化常用的HTTP方法的映射,用的少就不细说了。

      • @Responsebody:

        • 作用:将方法返回对象通过适当的转换器转换为指定的格式后,写入到response对象的body区,通常用来返回json和xml数据;

        • 在使用此注解之后不会再走视图处理器,而是直接将数据写入到输入流中,他的效果等同于通过response对象输出指定格式的数据; 等同于:response.getWriter.write(JSONObject.fromObject(user).toString());

      • @RequestBody:

        • 作用: 该注解用于读取Request请求的body部分数据通过适当的转换器转换后,绑定到参数上;

        • 例如application/json, application/xml等这些格式的数据,必须使用@RequestBody来处理;

      • @RequestParam:

        • 作用:将请求参数绑定到处理函数方法的变量中;设置默认值;

        • 举例:public void function(@RequestParam(name="id",defaultValue="0")  Long userId);

      • @PathVariable:

        • 将 URL 中占位符参数绑定到控制器处理方法的入参中;

        • 举例:请求路径为/user/xiaoming,返回user:xiaoming;

              @RequestMapping("/user/{username}")
          
              public String getUerBlog(@PathVariable String username) {
                  return "user: " + username;
              }
          

           

  • 未完待续

 

 

 

 

 

 

 

 

 

 

 

相关推荐
最新评论 (0)
返回
发表文章
jiming59680899
文章数
3
评论数
0
注册排名
803519