前言

项目介绍

系统分为3大部分:微服务、网站前台、网站管理后台;功能模块分为:问答、招聘、交友中心等

该项目融合了Docker容器化部署、第三方登陆、SpringBoot、SpringCloud、SpringData、RabbitMQ等,该项目采用完全的前后端分离,根据API文档开发

技术架构

后端架构:SpringBoot+SpringCloud+SpringData+StringMVC

前端架构:Node.js+Vue.js+ElementUI+NUXT

【注】:SpringBoot是Spring的纯注解版,SpringCloud是一个整合第三方技术的架构,采用SpringBoot方式(零配置文件)封装到Spring框架

SpringData是持久层的框架,用来替代Mybatis,更强大的是不仅支持关系型数据库,也支持非关系型数据库的增删改查

前后端分离

整体架构

SpringData JPA

SpringData JPA详解

系统设计与工程搭建

模块划分

RESTful

Restful一种软件架构风格,提供了一种设计原则和约束条件,基于http协议,适用于客户端和服务器端交互。目的是降低应用之间的耦合度,方便框架分布式处理程序

例如:用户请求的url使用同一个URL,用不同的请求方式get/post/delete/put等对请求的处理方法进行区分,在前后台分离开发中,不会对请求的资源地址产生混淆

SpringMVC对RESTtful提供了支持

1. 利用@RequestMapping 指定待处理请求的url模板和http请求的动作类型

2. 利用@PathVariable将url请求模板中的变量映射到处理方法参数上

3. 前台利用AJAX,在客户端发出put、delete动作的请求

一般请求格式如下:

@RequestMapping(value="/{id}",method=RequestMethod.GET)

@RequestMapping(value="/{id}",method=RequestMethod.POST)

@RequestMapping(value="/{id}",method=RequestMethod.DELETE)

@RequestMapping(value="/{id}",method=RequestMethod.PUT)

安全幂等性

安全:没有发生脏读、幻读、不可重复读等;幂等:在操作成功条件下,对数据没有产生不好的影响

1.GET:安全且幂等,向服务端发索取数据的请求,类似select操作

2.POST:不安全且不幂等,向服务器端发送数据,但是该请求会改变数据的种类等资源,类似insert操作

3.PUT:不安全但幂等,向服务器端发送数据,类似update操作

4.DELETE:不安全但幂等,删除某一个资源,类似delete操作

Docker创建MySQL服务

0. Linux上已经装过Docker和各种镜像

1. 在宿主机上启动docker,执行命令: systemctl start docker

2. 查看镜像,执行命令:docker images

3. 下载镜像,执行命令:docker search xxx ,然后执行 docker pull xxxx

4. 制作容器:docker run -di --name=tensquare_mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=private centos/mysql-57-centos7

5. 查看正在运行的容器:docker ps -a

6. 关闭容器:docker stop CONTAINER ID

7. 开启容器:docker start CONTAINER ID

8. 删除容器:docker rm CONTAINER ID

9. 通过Navicat连接MySQL微服务

tensquare_common模块开发

1. 新建entity包,创建类Result,用于控制器类返回结果,这是由于前端需要接收JSON对象,可以通过@ResponseBody,直接将Bean转为JSON对象

2. 创建类PageResult ,用于返回分页结果

3. 返回码定义类StatusCode

4. 分布式ID生成器,由于数据库要分片部署(MyCat),所以不能使用数据库本身的自增功能来产生主键值,只能由程序来生成唯一的主键值,util包下的IdWorker.java

tensquare_base模块开发

1. pom.xml文件引入依赖

<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><parent><artifactId>tensquare_parent</artifactId><groupId>com.tensquare</groupId><version>1.0-SNAPSHOT</version></parent><modelVersion>4.0.0</modelVersion><artifactId>tensquare_base</artifactId><dependencies><!--SpringBoot整合JPA--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-jpa</artifactId></dependency><!--依赖的common模块--><dependency><groupId>com.tensquare</groupId><artifactId>tensquare_common</artifactId><version>1.0-SNAPSHOT</version></dependency><!--数据库链接--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId></dependency></dependencies></project>

View Code

2.创建启动类

package com.tensquare.base;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;
import util.IdWorker;/*** @author Oxygen* @create 2018-11-30 - 18:49*/
@SpringBootApplication
public class BaseApp {public static void main(String[] args) {SpringApplication.run(BaseApp.class);}@Bean //只有当某个类用到时,通过@Bean注入到容器public IdWorker idWorker() {return new IdWorker();}
}

View Code

3. 在resources下创建数据库配置文件application.yml

server:port: 9001 #base微服务端口号
spring:application:name: tensquare-base #模块名字,必须写-datasource:driver-class-name: com.mysql.jdbc.Driverurl: jdbc:mysql://X.X.X.X:3306/tensquare_base?characterEncoding=utf-8
    username: Xpassword: Xjpa:database: mysqlshow-sql: true

View Code

4. CURD

5. 公共异常处理

package com.tensquare.base.controller;import entity.Result;
import entity.StatusCode;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;/*** 统一异常处理** @author Oxygen* @create 2018-12-01 - 19:26*/
@RestControllerAdvice
//如果全部异常处理返回json,那么可以使用 @RestControllerAdvice 代替 @ControllerAdvice ,
// 这样在方法上就可以不需要添加 @ResponseBody。
public class BaseExcepitonHandler {@ExceptionHandler(value = Exception.class)public Result exception(Exception e) {e.printStackTrace();return new Result(false, StatusCode.ERROR, e.getMessage());}
}

View Code

转载于:https://www.cnblogs.com/oxygenG/p/10046778.html

【project】十次方-01相关推荐

  1. 第五天 黑马十次方 NUXT框架、前台的搭建、前台活动模块的功能、前台招聘模块的功能

    第5章 网站前台-活动与招聘 学习目标: 掌握NUXT框架的基本使用方法 完成十次方网站前台的搭建 完成十次方网站前台活动模块的功能 完成十次方网站前台招聘模块的功能 1 服务端渲染技术NUXT 1. ...

  2. 十次方专属社交平台前端系统开发 网站前台-活动与招聘

    学习目标: 掌握NUXT框架的基本使用方法 完成十次方网站前台的搭建 完成十次方网站前台活动模块的功能 完成十次方网站前台招聘模块的功能 1服务端渲染技术NUXT 1.1什么是服务端渲染 服务端渲染又 ...

  3. java十次方社交项目实战(完整)

    资源目录: 前端系统开发 ├─1-1 十次方项目 前端环境搭建 ├─1-2 前端 API文档与模拟数据接口 ├─1-3前端 使用elementUI开发管理后台 ├─1-4 路由与状态管理 ├─1-5 ...

  4. 第六天 黑马十次方 用户注册、用户登陆掌握js-cookie、微信扫码登陆、nuxt嵌套路由

    学习目标: ** 完成用户注册功能 完成用户登陆功能,掌握js-cookie的使用 完成微信扫码登陆的功能 完成用户中心嵌套布局,掌握nuxt嵌套路由的使用 ** 1 用户注册 1.1 页面构建 创建 ...

  5. 第七天 黑马十次方 吐槽列表与详细页、发吐槽与评论功能、问答频道功能、掌握DataURL和阿里云OSS

    第7章 网站前台-吐槽与问答 学习目标: ** 完成吐槽列表与详细页 完成发吐槽与评论功能,掌握富文本编辑器的使用 完成问答频道功能 掌握DataURL和阿里云OSS** 1 吐槽列表与详细页 1.1 ...

  6. 十次方中的前端知识点随记

    1. 十次方中的前端知识点随记 好久没上传笔记了,主要最近的笔记都零零散散,知识点也不集中,就不传了:最近项目想用到前后端分离,而且前端我也想参与下,就先基本的学一遍,记点零星的笔记,各位能从中看到有 ...

  7. 十次方项目开发系列【8】:对评论点赞功能开发 Redis的配置和使用

    使用对评论点赞和取消点赞功能开发 一 评论点赞功能开发 1.1 先根据评论的id查询,再对点赞数加一 1.1.1 在CommentController添加方法 1.1.2 在CommentServic ...

  8. 给大家分享一下2018最新的Java黑马视频教程,包含十次方和乐优商城项目

    大家分享一下2018最新的Java黑马视频教程,2018年10月份的项目,包含十次方和乐优商城项目 链接:https://pan.baidu.com/s/1y7cFy67iPbyxOEzzvYSbhw ...

  9. 十次方需求分析与技术架构、Node.js、包资源管理器NPM、Webpack

    1 十次方需求分析与技术架构 1.1 十次方是个什么样的网站 <十次方>是程序员的专属社交平台,包括头条.问答.活动.交友.吐槽.招聘六大 频道.如图所示: 十次方名称的由来:2的10次方 ...

最新文章

  1. SQL语句优化技术分析
  2. Logon database Tiger引起DataGuard不同步问题
  3. 解决nodejs环境下端口号被占用的方法
  4. python爬虫入门实例-Python爬虫快速入门:基本结构简单实例
  5. 不带头节点的单链表如何头插(多图易懂)
  6. PyTorch深度学习实践07
  7. Java 多线程 —— AQS 详解
  8. 【数据库】第四章 JDBC、MyBatis
  9. 滴滴CTO张博:过去的1095天 人工智能发展主要依赖3件事
  10. JSP自定义标签_属性接收复杂类型处理方式
  11. deepinu盘制作工具_用U盘装系统,试试这款多系统启动盘制作工具!
  12. iOS 使用pods报错问题 pod --version
  13. win2012故障转移mysql集群_Windows下SQLSERVER故障转移集群案例
  14. 软件设计原则(二) 接口隔离原则
  15. Tinder 和 Potluck 的卡片风格实现
  16. ckplayer,超酷网页播放器,用于集成在网站中的播放器
  17. 管理手记:和上司相处不要太“学生气”
  18. web前端面试总结(自认为还算全面哈哈哈哈哈!!!!)
  19. 《两日算法系列》之第四篇:隐马尔可夫模型HMM
  20. ubuntu16.04安装百度网盘

热门文章

  1. CCIE-LAB-SDN-第一篇-修改交换机管理IP
  2. 【POJ - 3259 】Wormholes(Bellman_Ford或spfa算法,判断有向图中是否存在负环)
  3. 机器学习笔记(十二):聚类
  4. Apollo自动驾驶入门课程第③讲 — 定位
  5. mysql判断域为空_MySQL EXPLAIN 字段说明
  6. oracle mssql 实例,oracle,mysql,SqlServer三种数据库的分页查询的实例
  7. jupyter可以打开HTML文件吗,Jupyter ~ 像写文章般的 Coding (附:同一个ipynb文件,执行多语言代码)...
  8. android 判断空,Android空判断的坑
  9. matlab不同调制方式下性能比较,用不同调制方式实现跳/扩频混合通信的抗干扰性能...
  10. 修改背景图片_我花了5小时,为网易修改了一份内容超多的PPT,效果超级赞!!...