2020-10-28 Web应用开发大作业记录(1)架构与项目搭
Web应用开发大作业记录(1)架构与项目搭建
Web应用开发大作业已经布置了两三周了,但是由于前两周一直忙于《并行程序设计》课程的答辩准备,再加上遇到了状态低谷,所以迟迟没有动工;今天觉得再不动工的话可能完成的质量就不够高了,所以这就开始。
这个作业要做的是一个只有CRUD的后台管理系统,并且已经给出了前端代码,我们只需要完成后端代码并对前端的接口进行一些改造就可以了。没有任何复杂的地方,也没有任何的技术难点,只是一个堆时间堆代码量的最简单的项目罢了,估计大家写的也都差不多。但是如果想要打败其他同学拿到高分,那么重点就要放在对框架的运用、数据库的设计、各种接口规范的制定和代码的质量上。
项目所有的代码都已经保存在了GitHub上,可以作为Spring Boot
+MyBatis Plus
+MySQL
的一个实例项目来使用。如果有帮助的话希望不要忘记Star和Fork呀,非常感谢🙏
GitHub指路:GitHub
技术选型
由于是一个没有任何难度仅仅是堆代码量的项目,那么使用Spring Boot
和Mybatis Plus
这样的快速开发框架就非常合适了(可惜不能用Kotlin来写,哎),可以减少大约一半的代码量。在这里我使用的Java版本是Java 11,用Java 8也是可以的。
具体的技术选型如下:
- Web框架:Spring Boot
- ORM框架:MyBatis Plus
- 关系型数据库:MySQL
- Excel读写工具:EasyExcel
- 模板引擎:Thymeleaf
- 包管理工具:Maven
依赖注入、AOP、合法性校验之类的工作都交给Spring的相关组件。登录功能因为不复杂,所以就自己手写了。
数据库设计工具使用PDMan,数据库连接工具使用Navicat。
完整的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.4.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>site.wendev</groupId>
<artifactId>qikebao</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>qikebao</name>
<description>Web应用开发大作业</description>
<properties>
<java.version>1.8</java.version>
<druid.starter.version>1.1.21</druid.starter.version>
<bcrypt.version>0.4</bcrypt.version>
<mybatis.plus.starter.version>3.3.2</mybatis.plus.starter.version>
<easyexcel.version>2.2.4</easyexcel.version>
</properties>
<dependencies>
<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.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-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>${druid.starter.version}</version>
</dependency>
<dependency>
<groupId>javax.validation</groupId>
<artifactId>validation-api</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjrt</artifactId>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
</dependency>
<dependency>
<groupId>org.mindrot</groupId>
<artifactId>jbcrypt</artifactId>
<version>${bcrypt.version}</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>${mybatis.plus.starter.version}</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>${easyexcel.version}</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
Spring Boot配置
虽然Spring Boot相比Spring MVC已经少了很多配置项了,但是一些必要的配置还是要做的:
首先在application.yml
里指定要启用的配置文件:
spring:
profiles:
active: dev
然后在application-dev.yml
文件中进行具体的配置操作:
server:
port: 58080
spring:
datasource:
type: com.alibaba.druid.pool.DruidDataSource
druid:
url: jdbc:mysql://127.0.0.1:3306/qikebao?useUnicode=true&charset=utf8mb4&serverTimezone=UTC
username: root
password: '@1234567890'
initial-size: 5
min-idle: 5
max-active: 20
test-on-borrow: true
driver-class-name: com.mysql.cj.jdbc.Driver
pool-prepared-statements: true
max-wait: 60000
servlet:
# 不限制文件上传数量和大小
multipart:
max-file-size: -1
max-request-size: -1
mybatis-plus:
configuration:
# 打印SQL语句
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
logging:
level:
saas.qikebao.com.mapper: debug
主要是数据库连接池的一些配置。
这样项目就搭建好并且可以启动了,接下来需要做的就是数据库设计、Git提交规范以及接口规范的制定。