厚积薄发打卡Day51 :从云服务到跨域方案<Saas-HRM实战day01>

视频学习地址:SpringBoot2.0+Shiro+Jwt+SpringDataJpa前后端分离的Saas多租户平台开发实战

云服务的三种模式

1.1 IaaS(基础设施即服务)

,即基础设施即服务

提供给消费者的服务是对所有计算基础设施的利用,包括处理CPU、内存、存储、网络和其它基本的计算资源,用户能够部署和运行任意软件,包括操作系统和应用程序。消费者不管理或控制任何云计算基础设施,但能控制操作系统的选择、存储空间、部署的应用,也有可能获得有限制的网络组件(例如路由器、防火墙、负载均衡器等)的控制

1.1.2 PaaS(平台即服务)

,即平台即服务

提供给消费者的服务是把客户采用提供的开发语言和工具(例如Java,python, .Net等)开发的或收购的应用程序部署到供应商的云计算基础设施上去。客户不需要管理或控制底层的云基础设施,包括网络、服务器、操作系统、存储等,但客户能控制部署的应用程序,也可能控制运行应用程序的托管环境配置

1.1.3 SaaS(软件即服务)

,即软件即服务

提供给消费者完整的软件解决方案,你可以从软件服务商处以租用或购买等方式获取软件应用,组织用户即可通过 Internet 连接到该应用(通常使用 Web 浏览器)。所有基础结构、中间件、应用软件和应用数据都位于服务提供商的数据中心内。服务提供商负责管理硬件和软件,并根据适当的服务协议确保应用和数据的可用性和安全性。SaaS 让组织能够通过最低前期成本的应用快速建成投产。

厚积薄发打卡Day51 :从云服务到跨域方案<Saas-HRM实战day01>
  • 方案二:借助uuid

    • 生成全球唯一的字符串,这样不会重复和冲突,但是其字符串长度过于复杂,对于需要纯数字作为主键的表不太合适。
  • 方案三:借助全局redis

    • redis实现全局唯一id
    • 网络开销太大,可能在一定程度上影响系统的性能
  • 方案四:雪花算法(snowflake)

    • 目前微服务架构盛行,在分布式系统中的操作中都会有一些全局性ID的需求,所以我们不能使用数据库本身的自增
      功能来产生主键值,只能由程序来生成唯一的主键值。

    • 我们采用的是开源的twitter( 非官方中文惯称:推特.是国外
      的一个网站,是一个社交网络及微博客服务) 的snowflake (雪花)算法。

      厚积薄发打卡Day51 :从云服务到跨域方案<Saas-HRM实战day01>
      Lombok的大坑!!@Data重写的toString特性

      使用步骤:

      1. idea中安装插件

      2. 在pom文件中添加插件的依赖

      3. 常见注解

        • @Data 注解在类上;
          • 提供类所有属性的 getter 和 setter 方法,此外还提供了equals、canEqual、
            hashCode、toString 方法
        • @Setter :
          • 注解在属性上;为属性提供 setter 方法
        • @Setter :
          • 注解在属性上;为属性提供 getter方法
        • @NoArgsConstructor :
          • 注解在类上;为类提供一个无参的构造方法
        • @AllArgsConstructor :
          • 注解在类上;为类提供一个全参的构造方法

      环境搭建:

      1. 配置信息

      yaml文件需要对齐每行,每个空格都是格式??

      2. 企业管理CURD

      2.1 建表

      2.2 完成企业增删改查操作:

      2.2.1 实体类(domain)

      使用JPA操作数据:

      • 配置实体类和数据库表的映射关系,使用jpa注解绑定
        1. 实体类和表的映射关系
        2. 字段和属性的映射关系
          1. 主键属性的映射
          2. 普通属性的映射

      2.2.2 持久层(dao)

      继承两个接口

        • SpringDataJpa:JpaRepository增删改查
        • 一步一步学SpringDataJpa——JpaRepository查询功能
      • Spring Data:利用JpaSpecificationExecutor做复杂查询

        2.JpaSpecificationExecutor提供了以下接口

        其中Specification就是需要我们传进去的参数,它是一个接口

      话说Java不是单继承吗…为啥接口可以继承多两个接口/p>

      1. 为什么java的类是单继承的,接口是多继承的
      2. Java:接口继承接口 (多继承机制)

      如果一个类继承了两个类,但是这两个类中有相同的方法,那么子类调用方法时,无法确定应该调用哪个父类的方法。而接口中都是抽象方法,需要其子类具体实现,因此不存在找不到具体方法调用的问题。

      2.2.3 业务逻辑层(service)

      厚积薄发打卡Day51 :从云服务到跨域方案<Saas-HRM实战day01>

      2.2.4 控制层 (controller)

      厚积薄发打卡Day51 :从云服务到跨域方案<Saas-HRM实战day01>

      菜鸟教程:RESTful 架构详解

      RESTful架构应该遵循统一接口原则,统一接口包含了一组受限的预定义的操作,不论什么样的资源,都是通过使用相同的接口进行资源的访问。接口应该使用标准的HTTP方法如GET,PUT和POST,并遵循这些方法的语义。

      1. GET[select] 请求会向数据库发索取数据的请求,从而来获取信息,其只是用来查询一下数据,不会修改、增加数据,不会影响资源的内容。无论进行多少次操作,结果都是一样的。
      2. PUT[update] 请求是向服务器端发送数据的,从而改变信息,其用来修改数据的内容,但是不会增加数据的种类等,无论进行多少次PUT操作,其结果并没有不同。
      3. POST[insert]请求同PUT请求类似,都是向服务器端发送数据的,但是该请求会改变数据的种类等资源.几乎目前所有的提交操作都是用POST请求的。
      4. DELETE[delete]请求是用来删除某一个资源的。

      重点注解

      • @Runwith

        • 使用了Spring的SpringJUnit4ClassRunner
          以便在测试开始的时候自动创建Spring的应用上下文
          注解了@RunWith就可以直接使用spring容器,直接使用@Test注解,不用启动spring容器

          @RunWith注解作用

      • @RestController

        • 首先看看官方文档的原文描述:

          厚积薄发打卡Day51 :从云服务到跨域方案<Saas-HRM实战day01>

          跨域问题:

          对于前后端分离的项目来说,如果前端项目与后端项目部署在两个不同的域下,那么势必会引起跨域问题的出现。

          厚积薄发打卡Day51 :从云服务到跨域方案<Saas-HRM实战day01>

          SpringBoot跨域的几种解决方案
          后端(springboot)解决跨域问题

          1. 首先我门要知道什么是跨域:

            跨域是指不同域名之间相互访问。
            跨域,指的是浏览器不能执行其他网站的脚本。它是由浏览器的同源策略造成的,是浏览器对JavaScript施加的安全限制。
            也就是如果在A网站中,我们希望使用Ajax来获得B网站中的特定内容
            如果A网站与B网站不在同一个域中,那么就出现了跨域访问问题。

          2. 什么是同一个域br> 同一协议,同一ip,同一端口,三同中有一不同就产生了跨域。

          • 前端解决跨域:

            • 前边也说了,跨域是浏览器不能执行其他网站的脚本。它是由浏览器的同源策略造成的,是浏览器对JavaScript施加的安全限制。
            • 解决:
              所以搞一个node 服务器做代理,发出请求到node 服务器,node服务器转发到后端就可以绕过跨域问题。
          • 后端解决跨域问题:

            • 后端解决就比较简单了。
            • 在用Springboot框架时,只用在Controller类上添加一个“@CrossOrigin“注解就可以实现对当前controller 的跨域 访问了,当然这个标签也可以加到方法上。
            ///解决跨域问题@CrossOrigin@RestController@RequestMapping(value = "/company")public来源:coolgwayne
                                                                    

            声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

  • 上一篇 2021年3月13日
    下一篇 2021年3月13日

    相关推荐