Java项目 (SpringBoot+SpringCloud) 十次方:后端(一)环境搭建

1 系统设计

一.系统架构

  1. 前后端分离的系统架构,后端架构为:
    SpringBoot+SpringCloud+SpringMVC+SpringData 我们把这种架构也称之为全家桶。

二.模块划分

  1. 十次方工程共分为18个子模块(其中17个是微服务)
    Java项目 (SpringBoot+SpringCloud) 十次方:后端(一)环境搭建_第1张图片
  2. 本章内容是搭建父工程、公共子模块tensquare_common和基础微服务tensquare_base。

三.表结构分析

  1. 我们这里采用的分库分表设计,每个业务模块为1个独立的数据库。
  2. tensquare_article 文章
    tensquare_base 基础
    tensquare_friend 交友
    tensquare_gathering 活动
    tensquare_qa 问答
    tensquare_recruit 招聘
    tensquare_user 用户
    tensquare_spit 吐槽

四.API文档

  1. 课程提供了前后端开发接口文档(采用Swagger语言进行编写),并与Ngin进行了整合。双击Nginx执行文件启动后,在地址栏输入http://localhost:801 即可访问API文档
    前后端约定的返回码列表:
    Java项目 (SpringBoot+SpringCloud) 十次方:后端(一)环境搭建_第2张图片

五.理解RESTful

  1. 7个HTTP方法:GET/POST/PUT/DELETE/PATCH/HEAD/OPTIONS
  2. 接口规范
    我们在项目中用到了GET/POST/PUT/DELETE四种方法

2 项目前期准备

一.开发环境要求

  1. JDK1.8
    数据库mysql 5.7
    开发工具 idea 2017.1.2
    maven版本3.3.9
    docker 最新版本
    centos7
    VMware Workstation Pro 12

二.MYSQL建库建表(容器)

  1. 我们的mysql使用的是docker环境的.
  2. 下载镜像
  3. 创建容器
  4. SQLyog连接MYSQL ,并执行建表SQL

三.测试工具Postman

四.IDEA配置

3 十次方工程搭建

一.搭建父工程

  1. 选择菜单file-new project ,弹出窗口中左侧菜单选择Maven ,点击next按钮
  2. 删除src文件夹
    Java项目 (SpringBoot+SpringCloud) 十次方:后端(一)环境搭建_第3张图片
  3. 修改pom.xml 添加以下配置
    Java项目 (SpringBoot+SpringCloud) 十次方:后端(一)环境搭建_第4张图片
    Java项目 (SpringBoot+SpringCloud) 十次方:后端(一)环境搭建_第5张图片
    Java项目 (SpringBoot+SpringCloud) 十次方:后端(一)环境搭建_第6张图片

二.搭建公共子模块

  1. 右键点击工程,弹出菜单选择 New -Module 弹出窗口选择Maven ,点击next按钮
  2. 创建返回结果实体类
    1. 新建entity包,包下创建类Result,用于控制器类返回结果
      Java项目 (SpringBoot+SpringCloud) 十次方:后端(一)环境搭建_第7张图片
      get,set,无参构造,有参构造
    2. 创建类PageResult ,用于返回分页结果
      Java项目 (SpringBoot+SpringCloud) 十次方:后端(一)环境搭建_第8张图片
    3. 返回码定义类
      Java项目 (SpringBoot+SpringCloud) 十次方:后端(一)环境搭建_第9张图片
    4. 分布式ID生成器
      由于我们的数据库在生产环境中要分片部署(MyCat),所以我们不能使用数据库本身的自增功能来产生主键值,只能由程序来生成唯一的主键值。我们采用的是开源的twitter( 非官方中文惯称:推特.是国外的一个网站,是一个社交网络及微博客服务) 的snowflake (雪花)算法。
      tensquare_common工程创建util包,将IdWorker.java直接拷贝到tensquare_common工程的util包中。

4 基础微服务-标签CRUD

一.模块搭建

  1. 搭建基础微服务模块tensquare_base , pom.xml引入依赖
    Java项目 (SpringBoot+SpringCloud) 十次方:后端(一)环境搭建_第10张图片
  2. 创建启动类
    Java项目 (SpringBoot+SpringCloud) 十次方:后端(一)环境搭建_第11张图片
  3. 在resources下创建application.yml
    Java项目 (SpringBoot+SpringCloud) 十次方:后端(一)环境搭建_第12张图片

二.标签管理-CRUD

  1. 表结构分析
    表名称:tb_label
    Java项目 (SpringBoot+SpringCloud) 十次方:后端(一)环境搭建_第13张图片
  2. CRUD的实现
    1. 实体类
      创建com.tensquare.base包,包下创建pojo包 ,包下创建实体类Label
    2. 创建数据访问接口
      com.tensquare.base包下创建dao包,包下创建LabelDao接口
      Java项目 (SpringBoot+SpringCloud) 十次方:后端(一)环境搭建_第14张图片
      JpaRepository提供了基本的增删改查
      JpaSpecificationExecutor用于做复杂的条件查询
    3. 业务逻辑类
      com.tensquare.base包下创建service包,包下创建LabelService类。 在这个类中,我们实现基本的增删改查功能
    4. 控制器类
      com.tensquare.user包下创建controller包,创建UserController
      Java项目 (SpringBoot+SpringCloud) 十次方:后端(一)环境搭建_第15张图片

三.功能测试

  1. 测试查询全部数据
    使用浏览器测试GET方法 http://localhost:9001/label
  2. 测试根据ID查询标签
    使用浏览器测试GET方法 http://localhost:9001/label/1
  3. 测试增加:
    使用postMan工具来进行测试POST PUT DELETE等方法。
  4. 测试修改,删除功能

四.公共异常处理

  1. 为了使我们的代码更容易维护,我们创建一个类集中处理异常
    在om.tensquare.user.controller包下创建公共异常处理类BaseExceptionHandler
    Java项目 (SpringBoot+SpringCloud) 十次方:后端(一)环境搭建_第16张图片

五.跨域处理

  1. 跨域是什么?浏览器从一个域名的网页去请求另一个域名的资源时,域名、端口、协议任一不同,都是跨域 。我们是采用前后端分离开发的,也是前后端分离部署的,必然会存在跨域问题。 怎么解决跨域?很简单,只需要在controller类上添加注解@CrossOrigin 即可!这个注解其实是CORS的实现。
  2. CORS(Cross-Origin Resource Sharing, 跨源资源共享)是W3C出的一个标准,其思想是使用自定义的HTTP头部让浏览器与服务器进行沟通,从而决定请求或响应是应该成功,还是应该失败。因此,要想实现CORS进行跨域,需要服务器进行一些设置,同时前端也需要做一些配置和分析。

你可能感兴趣的:(实践项目)