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

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

作者: NoelleMu | 来源:发表于2020-10-28 21:24 被阅读0次

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

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

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

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

    GitHub指路:GitHub

    技术选型

    由于是一个没有任何难度仅仅是堆代码量的项目,那么使用Spring BootMybatis 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提交规范以及接口规范的制定。

    相关文章

      网友评论

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

          本文链接:https://www.haomeiwen.com/subject/gfthvktx.html