国外空间设计网站,图片软件制作工具,网站建设推广软文案例,用asp.net 做网站前言 项目介绍 系统分为3大部分#xff1a;微服务、网站前台、网站管理后台#xff1b;功能模块分为#xff1a;问答、招聘、交友中心等 该项目融合了Docker容器化部署、第三方登陆、SpringBoot、SpringCloud、SpringData、RabbitMQ等#xff0c;该项目采用完全的前后端分离… 前言 项目介绍 系统分为3大部分微服务、网站前台、网站管理后台功能模块分为问答、招聘、交友中心等 该项目融合了Docker容器化部署、第三方登陆、SpringBoot、SpringCloud、SpringData、RabbitMQ等该项目采用完全的前后端分离根据API文档开发 技术架构 后端架构SpringBootSpringCloudSpringDataStringMVC 前端架构Node.jsVue.jsElementUINUXT 【注】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},methodRequestMethod.GET) RequestMapping(value/{id},methodRequestMethod.POST) RequestMapping(value/{id},methodRequestMethod.DELETE) RequestMapping(value/{id},methodRequestMethod.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 --nametensquare_mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORDprivate 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 version1.0 encodingUTF-8?project xmlnshttp://maven.apache.org/POM/4.0.0 xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsdparentartifactIdtensquare_parent/artifactIdgroupIdcom.tensquare/groupIdversion1.0-SNAPSHOT/version/parentmodelVersion4.0.0/modelVersionartifactIdtensquare_base/artifactIddependencies!--SpringBoot整合JPA--dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-data-jpa/artifactId/dependency!--依赖的common模块--dependencygroupIdcom.tensquare/groupIdartifactIdtensquare_common/artifactIdversion1.0-SNAPSHOT/version/dependency!--数据库链接--dependencygroupIdmysql/groupIdartifactIdmysql-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?characterEncodingutf-8username: 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