2020-10-28 Web应用开发大作业记录(1)架构与项目搭

2020-10-28  本文已影响0人  NoelleMu

Web应用开发大作业记录(1)架构与项目搭建

Web应用开发大作业已经布置了两三周了,但是由于前两周一直忙于《并行程序设计》课程的答辩准备,再加上遇到了状态低谷,所以迟迟没有动工;今天觉得再不动工的话可能完成的质量就不够高了,所以这就开始。

这个作业要做的是一个只有CRUD的后台管理系统,并且已经给出了前端代码,我们只需要完成后端代码并对前端的接口进行一些改造就可以了。没有任何复杂的地方,也没有任何的技术难点,只是一个堆时间堆代码量的最简单的项目罢了,估计大家写的也都差不多。但是如果想要打败其他同学拿到高分,那么重点就要放在对框架的运用、数据库的设计、各种接口规范的制定和代码的质量上。

项目所有的代码都已经保存在了GitHub上,可以作为Spring Boot+MyBatis Plus+MySQL的一个实例项目来使用。如果有帮助的话希望不要忘记Star和Fork呀,非常感谢🙏

GitHub指路:GitHub

技术选型

由于是一个没有任何难度仅仅是堆代码量的项目,那么使用Spring BootMybatis Plus这样的快速开发框架就非常合适了(可惜不能用Kotlin来写,哎),可以减少大约一半的代码量。在这里我使用的Java版本是Java 11,用Java 8也是可以的。

具体的技术选型如下:

依赖注入、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提交规范以及接口规范的制定。

上一篇下一篇

猜你喜欢

热点阅读