1 我的项目简介
1.1 概述
动吧游览生态系统, 应市场高端用户需要,决定开发这样的一套游览零碎,此零碎蕴含游览电商零碎(举荐子系统, 广告子系统,评估子系统,商品子系统,订单子系统)等,游览分销零碎 (分销商的治理),游览业务零碎(产品研发,计调服务,零碎权限管理子系统) 等。
1.2 原型剖析
基于用户需要, 进行原型设计(基于 html+css+js 进行动态页面实现)。例如零碎登录页面:
零碎登录胜利页面 (例如 starter.html)
菜单展现页面
2 技术架构
2.1 我的项目分层架构
本我的项目应用层基于 MVC 设计思维,进行分层架构设计,目标是将简单问题简单化, 实现各司其职, 各尽所能. 而后基于“高内聚, 低耦合”的设计思维,再实现各对象之间协同, 从而进步零碎的可维护性,可扩展性。
其中:
1. 凋谢接口层:可间接封装 Service 办法裸露成 RPC (近程过程调用)接口;也可通过 Web 封装成 http 接口;同时也可进行网关安全控制、流量管制等。
2. 终端显示层:负责各个端的模板渲染并显示。以后次要是 thymeleaf 渲染,JS 渲染,挪动端展现等。
3.Web 申请解决层:次要是对访问控制进行转发,申请参数校验,响应后果解决等
4.Service 层:绝对具体的业务逻辑服务层(外围业务,扩大业务)。
5.Manager 层:通用业务解决层,它有如下特色:
1)对第三方平台封装的层,预处理返回后果及转化异样信息;
2)对 Service 层通用能力的下沉,如缓存计划、中间件通用解决;
3)与 DAO 层交互,对多个 DAO 的组合复用。
6.DAO 层:数据拜访层,与底层 MySQL、Oracle、Hbase 等进行数据交互。
7. 内部接口或第三方平台:包含其它部门 RPC 凋谢接口,根底平台,其它公司的 HTTP 接口
阐明:对如上分层中波及到常识的点,逐渐增强。
总之:分层的目标就是将简单问题进行拆解,而后分而治,进而进步零碎的可扩展性以及可维护性。
2.2 API 利用架构
整体 API 利用架构:
3 技术整合
3.1 环境筹备
3.1.1 数据库初始化
3.1 启动 MySQL 客户端并登陆, 而后执行
1) set names utf8;
2) source d:/dbpms.sql
阐明: 如果在 mysql 客户端查问表中数据,能够先执行 set names gbk,否则可能会出
现乱码。还有一点要记住, 在拿到任何一个 sql 脚本文件时, 不要上来就执行它, 要先关上
看一看, 查看是否有删除库或删除表的语句, 这些语句是否会对你以后数据库中的库和表
有影响 , 如果有肯定要通过 leader 审批, 能力执行删除等操作.
3.2 创立我的项目
3.2.1 创立我的项目 moudle
- 各我的项目模块关系设计, 如图所示:
- 创立父工程, 如图所示:
我的项目创立当前, 将我的项目 module 中的 src 删除, 并关上我的项目中的 pom 文件, 批改 module 为 pom 工程, 代码如下:
<packaging>pom</packaging>
在 parent 工程创立后当前, 增加相干依赖,pom 文件如下:
<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.5.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.cy</groupId>
<artifactId>15-dbpms-parent</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>15-dbpms-parent</name>
<description>Demo project for Spring Boot</description>
<packaging>pom</packaging>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jdbc</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.3</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
- 创立 dbms-common 工程, 如图所示:
common 工程中 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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.cy</groupId>
<artifactId>15-dbpms-parent</artifactId>
<version>0.0.1-SNAPSHOT</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.cy</groupId>
<artifactId>15-dbpms-common</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>15-dbpms-common</name>
<description>Demo project for Spring Boot</description>
<packaging>jar</packaging>
<properties>
<java.version>1.8</java.version>
</properties>
</project>
- 创立 dbms-admin 工程, 如图所示:
5.dbpms-admin 工程 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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.cy</groupId>
<artifactId>15-dbpms-parent</artifactId>
<version>0.0.1-SNAPSHOT</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.cy</groupId>
<artifactId>15-dbpms-admin</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>15-dbpms-admin</name>
<description>Demo project for Spring Boot</description>
<packaging>jar</packaging>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>com.cy</groupId>
<artifactId>15-dbpms-common</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
</dependencies>
</project>
3.2.2 批改配置文件
在 application.yml 文件中增加如下配置(server,datasource,mybatis,mvc)
server:
port: 80
spring:
main:
banner-mode: off
datasource:
url: jdbc:mysql:///dbpms?serverTimezone=GMT%2B8&characterEncoding=utf8
username: root
password: root
thymeleaf:
prefix: classpath:/templates/modules/
suffix: .html
cache: false
mybatis:
mapper-locations: classpath:/mapper/*/*.xml
logging:
level:
com.cy: debug
3.3 首页初始化
3.3.1 定义页面初始资源
- 将 相干资源拷贝到我的项目 static 目录
- 将 资源拷贝到我的项目的 templates 的 moudles 目录
3.3.2 创立页面 Controller
创立出现首页页面的 controller 对象。此 controller 会作为我的项目中所有页面拜访的入口。
package com.cy.pj.sys.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@RequestMapping("/")
@Controller// 解决客户端所有页面申请
public class PageController {@RequestMapping("doIndexUI")
public String doIndexUI(){return "starter";}
}
3.3.3 启动我的项目进行测试
启动 tomcat,在地址栏输出 http://localhost/doIndexUI(地址中的端口号要参考本人 tomcat 启动端口)地址进行拜访,如果没有问题会出现如下页面:
页面拜访流程剖析,如下图所示:
4 总结
4.1 重点难点剖析
- 我的项目需要调研,剖析,原型设计, 评审?
- 我的项目整体利用分层架构及 API 设计架构?
- 我的项目初始化环境配置 (数据库,IDE,MAVEN) 及运行?
4.2 FAQ 剖析
- 我的项目是如何进行分层设计的?(MVC)。
- 我的项目页面是如何设计的? (BootStrap,AdminLTE- 网址(adminlte.io))。
- 客户端向服务端发动一个申请, 服务端申请解决的一个过程是怎么的?
4.3 BUG 剖析
- 申请资源不存在, 如下图所示:
问题剖析:
- 查看 url 是否正确(是否有对应的映射)
- 查看 controller 的包是否正确以及是否有对应的注解 (例如 @Controller) 进行形容
- 响应资源解析异样, 如下图所示:
问题剖析:
- 如果 start 是模板,查看响应页面是否存在.
- 查看配置文件中视图的前缀、后缀是否正确
- 如果 start 不是 html 模板,查看对应的 Controller 办法上是否有 @ReponseBody 注解