(一)后端项目的初始构建

后端SpringBoot项目的构建

一、后端创建项目

1.新建maven项目

首先打开idea,新建一个后端的maven项目并勾选上所下载好的JDK

在这里插入图片描述

这样我们就构建了一个结构如图所示的项目

在这里插入图片描述

其中,

  • src-main-java是我们编写主要文件的地方。
  • resources文件夹内则是放yml类型文件即启动配置的地方。
  • 而下面的test内则是我们编写测试类的地方。
  • 最后的pom.xml则是引入外部依赖的地方。
2.引入springboot依赖及其余功能性依赖
  • 检查idea的maven配置,修改为本地的maven以及本地仓库,否则会出现依赖无法下载的情况(没有科学上网软件)。
    在这里插入图片描述

  • 打开我们的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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
    
        <groupId>test</groupId>
        <artifactId>TestProject</artifactId>
        <version>1.0</version>
    
        <parent>
            <artifactId>spring-boot-dependencies</artifactId>
            <groupId>org.springframework.boot</groupId>
            <version>2.3.3.RELEASE</version>
        </parent>
    
        <!--统一编码和JAVA版本-->
        <properties>
            <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
            <maven.compiler.source>1.8</maven.compiler.source>
            <maven.compiler.target>1.8</maven.compiler.target>
            <java.version>1.8</java.version>
        </properties>
    
        <dependencies>
    
            <!--MySQL 连接组件-->
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
            </dependency>
    
            <!--MyBaits-->
            <dependency>
                <groupId>org.mybatis.spring.boot</groupId>
                <artifactId>mybatis-spring-boot-starter</artifactId>
                <version>2.1.2</version>
            </dependency>
    
            <!--Druid-->
            <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>druid</artifactId>
                <version>1.2.2</version>
            </dependency>
    
            <!--    Druid Spring Boot 组件-->
            <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>druid-spring-boot-starter</artifactId>
                <version>1.2.2</version>
            </dependency>
    
            <!--Spring Boot Aop-->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-aop</artifactId>
            </dependency>
    
            <!--Spring Validation-->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-validation</artifactId>
            </dependency>
    
            <!--Spring Boot 测试-->
            <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>
    
            <!--Junit-->
            <dependency>
                <groupId>org.junit.jupiter</groupId>
                <artifactId>junit-jupiter</artifactId>
                <scope>test</scope>
            </dependency>
    
            <!--LomBok-->
            <dependency>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
            </dependency>
    
            <!--Hutool-->
            <dependency>
                <groupId>cn.hutool</groupId>
                <artifactId>hutool-all</artifactId>
                <version>5.4.7</version>
            </dependency>
    
            <!--Spring Boot Web-->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
                <version>2.4.1</version>
            </dependency>
    
            <!--Spring Boot Actuator-->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-actuator</artifactId>
            </dependency>
    
            <!-- https://mvnrepository.com/artifact/com.alibaba/fastjson -->
            <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>fastjson</artifactId>
                <version>1.2.78</version>
            </dependency>
    
    
            <!--Junit测试-->
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <scope>test</scope>
            </dependency>
    
        </dependencies>
    
        <build>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                    <executions>
                        <execution>
                            <goals>
                                <goal>repackage</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>
            </plugins>
        </build>
    
        <profiles>
            <profile>
                <id>dev</id>
                <activation>
                    <activeByDefault>true</activeByDefault>
                </activation>
                <properties>
                    <profilesActive>dev</profilesActive>
                </properties>
            </profile>
            <profile>
                <id>pro</id>
                <properties>
                    <profilesActive>pro</profilesActive>
                </properties>
            </profile>
        </profiles>
    
    </project>
    
    
  • 最后,我们刷新一下maven,等待下载依赖即可。
    在这里插入图片描述

  • 至此,我们的依赖就引入完成。

3.启动测试

事一步一步做,饭一口一口吃。导完后,我们就要启动测试一下。

  • 找到src-main-java-org.example下的Main类也就是我们的启动类,我们给他改一个名字,叫XxxApplication

  • 然后我们将其内容修改为如下代码

    • @Slf4j
      @SpringBootApplication(exclude = {SecurityAutoConfiguration.class})
      @ServletComponentScan
      public class TestApplication extends SpringBootServletInitializer {
          public static void main(String[] args) {
              SpringApplication.run(TestApplication.class, args);
          }
          @Override
          protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
              return builder.sources(TestApplication.class);
          }
      }
      
  • class上的@xx为注解,不了解的小伙伴可以先去学学注解是什么,它是我们写代码的利器,这里不再过多赘述。

  • 然后在resource文件夹下新建两个文件,分别为application.yml以及application-test.yml,前者是我们配置的主类,公共配置可放在其中,后者则是配置的子类,放一些具有差异性的配置,如mysql等。我们通过主类选择对应子类进行启动。

  • application.yml文件内容如下,为配置应用端口,应用的子配置等内容,我们这里将端口选为8070path选为/test

    • # Tomcat
      server:
        tomcat:
          uri-encoding: UTF-8
          threads:
            max: 1000
            min-spare: 30
        port: 8070
        servlet:
          context-path: /test
          session:
            cookie:
              http-only: true
      
      spring:
        application:
          name: test
        # 环境 dev|test|prod
        profiles:
          active: test #选择application-test.yml启动
        messages:
          encoding: UTF-8
          basename: i18n/messages
        mvc:
          pathmatch:
            matching-strategy: ANT_PATH_MATCHER
        servlet:
          multipart:
            max-file-size: 1024MB
            max-request-size: 1024MB
            enabled: true
      
  • application-test.yml内容如下,为配置mysql数据库的相关内容,注意url内3306后面为你数据库的名称,我的数据库名称叫做test,问号后面一般为固定写法。下面的usernamepassword分别为你mysql的用户名以及密码,我的数据库无密码,因此为空。

    • spring:
        datasource:
          druid:
            #MySQL
            driver-class-name: com.mysql.cj.jdbc.Driver
            url: jdbc:mysql://127.0.0.1:3306/test?allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=GMT%2B8&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true
            username: root
            password:
      
  • 最后…项目,启动!

在这里插入图片描述

  • 看控制台的输出,成功把tomcat启动到localhost:8070/test这个地址,表示成功,之后我们的接口都是拼接在这个项目地址之后的。
4.接口测试

项目启动成功后,我们接着就进行接口的测试。

  • src-main下新建com.test.common文件夹

在这里插入图片描述

  • 取消勾选下图的选项可层级显示。
    在这里插入图片描述

  • 然后我们把org-example下的XxApplication移到com下,与test同一层,这样才能扫描到test下写的接口。

  • 接着我们再在common下新建四个文件夹分别为controllerserviceentity、以及dto。并在service下新建一个impl文件夹。

在这里插入图片描述

  • controller为编写对外接口的文件夹

  • service为编写对外接口实现方法的接口的文件夹(觉得不理解,可看下面接口工作顺序解释)

    • service下的impl则是编写实现实现方法的接口的文件夹
  • entity下的类的内容是对应数据库内表的字段。

  • dto下的类则是entity的拓展类,给接口用的,因为有时接口接收的数据并不是entity的内容,我们需要dto进行一次转换,才能存入数据库中。

  • 一般接口的工作顺序是,外部请求到来,运行controller里的对应类,对应类则调用service内的方法,该方法由serviceImpl进行实现。这样做是为了防止实现代码直接写在controller内,不好扩展。此处不理解没有关系,我们测试暂时用不到。

  • 再在controller文件夹内新建一个test

    • 内容如下

    • package com.test.common.controller;
      
      import lombok.AllArgsConstructor;
      import org.springframework.web.bind.annotation.GetMapping;
      import org.springframework.web.bind.annotation.RequestMapping;
      import org.springframework.web.bind.annotation.RestController;
      
      @AllArgsConstructor
      @RestController
      @RequestMapping("/layer1")
      public class test {
          @GetMapping("layer2")
          public String getString(){
              String text = "测试成功";
              return text;
          }
      }
      
    • @AllArgsConstructor :它是lombok中的注解,作用在类上;
      使用后添加一个构造函数,该构造函数含有所有已声明字段属性参数,对应的 @NoArgsConstructor 是添加一个无参数的构造器。

    • @RestController: 用以表明当前是一个控制器类。其为Controller+ResponseBody,Controller 里面的方法都以 json 格式输出,不用再写什么 jackjson 配置的了!

    • @RequestMapping :相当于SpringMVC的xml中注册servlet,简单理解就是test下面的所有接口都在/layer1之后

    • @GetMapping,声明此方法是一个Get请求

  • 最后,重启项目!然后再浏览器中输入我们的接口地址localhost:8070/test/layer1/layer2

在这里插入图片描述

5.总结

第一篇介绍了从新建一个maven项目到完成一个接口编写,其中经历了springboot依赖引入、springboot基本配置yml文件编写、mysql配置连接、以及基本接口框架的构建,下一篇将编写接口对数据库进行增删改查操作。

6.本文借鉴文档

新建SpringBoot Maven项目中pom常用依赖配置及常用的依赖的介绍_pom依赖-CSDN博客

前后端分离项目-后端接口入门开发手记_前后端分离项目搭建-CSDN博客

二、 写在最后

我自己也是一个编程小白,写这个专栏的目的也是为了巩固基础知识顺带和大家一起分享,如果其中有什么问题或者需要补充的,欢迎各位多多斧正。