【project】十次方-01

前言

項目介紹

系統分為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

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/450493.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/450493.shtml
英文地址,請注明出處:http://en.pswp.cn/news/450493.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Docker 容器 和 虛擬機 的異同

見&#xff1a;https://www.docker.com/what-container 將軟件打包成標準化的單元進行開發&#xff0c;發貨和部署 容器映像是一個軟件的輕量級獨立可執行軟件包&#xff0c;包含運行所需的所有內容&#xff1a;代碼&#xff0c;運行時&#xff0c;系統工具&#xff0c;系統庫&…

iTerm2 快捷鍵大全

轉載地址https://cnbin.github.io/blog/2015/06/20/iterm2-kuai-jie-jian-da-quan/ 標簽 新建標簽&#xff1a;command t關閉標簽&#xff1a;command w切換標簽&#xff1a;command 數字 command 左右方向鍵切換全屏&#xff1a;command enter查找&#xff1a;command …

大型軟件編程規范

“安全第一”的C語言編程規范 編者按&#xff1a;C語言是開發嵌入式應用的主要工具&#xff0c;然而C語言并非是專門為嵌入式系統設計&#xff0c;相當多的嵌入式系統較一般計算機系統對軟件安全性有更苛刻的要求。1998年&#xff0c;MISRA指出&#xff0c;一些在C看來可以接受…

設計行業的新寵——云渲染

無論是對任職設計崗位的人員還是專業的設計公司來說&#xff0c;3D渲染&#xff0c;都是工作中極其重要的一步。在做過渲染后&#xff0c;設計的作品才能展現出它最接近真實世界的狀態。 但是由于渲染實質上是對大量數據的處理&#xff0c;所以渲染這項工作對電腦硬件的要求非常…

[Xcode 實際操作]七、文件與數據-(17)解析JSON文檔

目錄&#xff1a;[Swift]Xcode實際操作 本文將演示如何解析JSON文檔。 項目中已添加一份JSON文檔&#xff1a;menu.json 1 {2 "menu":3 {4 "id": "file",5 "value": "File",6 "menuit…

Docker,容器,虛擬機和紅燒肉

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 Docker是什么&#xff1f;容器又是什么&#xff1f; Docker 直譯&#xff1a;碼頭工人。是在碼頭上搬運貨物的工人容器 英文&#xff1…

mac終端操作文件或文件夾(持續更新)

1、復制文件夾&#xff08;有文件&#xff09; cp -R 要復制的文件 要復制到哪個路徑 2、復制文件 cp 要復制的文件 要復制到哪個路徑 3、移動文件夾 mvdir 你要移動的文件夾 要移動到哪里

前端進階系列(六):盒模型

盒模型是界面布局需要掌握的基本功。盒模型基本概念 盒模型四要素&#xff1a;margin、border、padding、content。 盒模型分為&#xff1a;標準盒模型&#xff08;W3C盒模型&#xff09; 、 怪異盒模型&#xff08;IE盒模型&#xff09; 盒模型區別 怪異盒模型總寬度 content…

holer實現外網訪問內網數據庫

外網訪問本地數據庫 本地安裝了數據庫&#xff0c;只能在局域網內訪問&#xff0c;怎樣從公網也能訪問內網數據庫&#xff1f; 本文將介紹使用holer實現的具體步驟。 1. 準備工作 1.1 安裝并啟動數據庫 默認安裝的數據庫端口是3306。 2. 實現步驟 2.1 下載并解壓holer軟件包 Ho…

Docker 概念解析

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 Docker的功能定位Docker為基于Linux容器的開源項目&#xff0c;其利用Linux內核中的各項功能——例如命名空間與控制組——以在操作系統之…

C語言 常用API

MySQL的C語言API接口 1、首先當然是連接數據庫&#xff0c;函數原型如下&#xff1a; MYSQL * STDCALL mysql_real_connect(MYSQL *mysql, const char *host,const char *user,const char *passwd,const char *db,unsigned int port,const char *unix_socket,unsigned long …

hadoop生態搭建(3節點)-10.spark配置

# https://www.scala-lang.org/download/2.12.4.html# 安裝 scala tar -zxvf ~/scala-2.12.4.tgz -C /usr/local rm –r ~/scala-2.12.4.tgz # http://archive.apache.org/dist/spark/spark-2.3.0/ # 安裝 spark tar -zxf ~/spark-2.3.0-bin-hadoop2.7.tgz -C /usr/local mv /u…

持續集成coding

1、安裝docker yum -y install docker yum -y install composer yum -y install docker-compose 2、啟動docker服務 service docker start 3、測試安裝結果 docker-compose --version 4、創建目錄 mkdir /data/continus-deploy 5、寫入docker-compose.yml version: …

JSON字符串轉換為Map

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 本文是利用阿里巴巴封裝的FastJSON來轉換json字符串的。例子如下&#xff1a; [java] view plain copy package com.zkn.newlearn.json;…

排序與查找 詳細分析

C語言五種基本排序算法 程序員可以使用的基本排序算法有5種&#xff1a; 插入排序(insertionsort&#xff0e;)交換排序(exchangesOrt)選擇排序(selectionsort)歸并排序(mergesort)分布排序(distributionsort) 為了形象地解釋每種排序算法是怎樣工作的&#xff0c;讓我們來看…

《Netkiller Spring Cloud 手札》Spring boot 2.0 mongoTemplate 操作范例

2019獨角獸企業重金招聘Python工程師標準>>> 本文節選自 《Netkiller Spring Cloud 手札》 Netkiller Spring Cloud 手札 Spring Cloud Cookbook Mr. Neo Chan, 陳景峯(BG7NYT) 中國廣東省深圳市望海路半島城邦三期 518067 86 13113668890<netkillermsn.com> …

ZooKeeper原理及使用

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 ZooKeeper是Hadoop Ecosystem中非常重要的組件&#xff0c;它的主要功能是為分布式系統提供一致性協調(Coordination)服務&#xff0c;與…

自律只需要這篇文章

1. 鉆研&#xff0c;只要你有一個方面特別優秀&#xff0c;則在這個社會就足夠了,能夠吃一輩子 2. 領悟&#xff0c;需要的時候&#xff0c;別人給你只是一個具體的方向&#xff0c;具體的路還是要自己去設計 3. 執行力&#xff0c;晚上喜歡想想沒有小本本記錄&#xff0c;那么…

數據和文件操作

怎樣用C語言對某個目錄下的文件名進行排序? 在4&#xff0e;8的例子中&#xff0c;用_dos_findfirst()和_dos_findnext()函數遍歷目錄結構&#xff0c;每找到一個文件名&#xff0c;就把它打印在屏幕上&#xff0c;因此&#xff0c;文件名是逐個被找到并列出來的。當你對某個目…