Flyinsky's Codes
1262 字
6 分钟
SpringBoot3 Starter

Springboot 3 Starter#

:::warning 提示

Starter后缀笔记仅适用于快速上手,且在学习后端前需了解Java SE,MySQL,MyRedis。

:::

:::tip 前言

​ 很荣幸你能来到我的博客参考我的Springboot 3后端速成笔记。以下是Springboot后端的基本架构:

flowchart TD
  A[前端] -->|发送请求,提交数据| B(Controller) -->|获取身份,传递数据| C(Service)
  -->|校验权限,数据库操作| D(Mapper) -->|发送指令| E(数据库)

:::

1.环境配置#

  1. jdk版本:17

    【123网盘下载】Zulu JDK 17

  2. 开发IDE:IDEA

  3. 构建工具:MAVEN

  4. 接口测试工具:ApiPost

  5. Maven

    我们在使用框架开发时需要使用到别人已经开发好的程序,例如数据库驱动,Springboot基本框架等等。我们称这些软件为“依赖”。所以我们需要一个“管理器”对安装的依赖进行管理。

    下载:【官方下载】 【123网盘】(推荐)

    换源:

    <!--`conf/settings.xml`-->
    <!--在settings.xml中找到<mirrors>标签添加以下子标签-->
    <mirror>
        <id>aliyunmaven</id>
        <mirrorOf>*</mirrorOf>
        <name>阿里云公共仓库</name>
        <url>https://maven.aliyun.com/repository/public</url>
    </mirror>
  6. 安装依赖

    依赖的管理在项目文件根目录下的pom.xml中,只需要找到dependencies标签下将需要安装的依赖标签粘贴进去,再刷线Maven即可。

    依赖查询网站:MvnRepository

    <!--`pom.xml`-->
    		<dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-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>3.0.2</version>
            </dependency>
    
            <dependency>
                <groupId>javax.servlet</groupId>
                <artifactId>javax.servlet-api</artifactId>
                <version>4.0.1</version>
                <scope>provided</scope>
            </dependency>
    
            <dependency>
                <groupId>com.mysql</groupId>
                <artifactId>mysql-connector-j</artifactId>
                <scope>runtime</scope>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>org.mybatis.spring.boot</groupId>
                <artifactId>mybatis-spring-boot-starter-test</artifactId>
                <version>3.0.2</version>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
            </dependency>
            <dependency>
                 <groupId>com.alibaba</groupId>
                 <artifactId>fastjson</artifactId>
                 <version>2.0.32</version>
             </dependency>

    2.目录结构#

    (1).Controller:控制器#

    i.功能:响应前端发送的请求,负责与前端数据的收发。#
    ii.书写格式#
    @Controller
    @RequestMapping("/api/example")
    public class ExampleController {
        
       @GetMapping("/hello")
        public String hello() {
            return "hello";
        }
       
        //其他控制器接口
    }

    (2).Enity : 实体类#

    i.功能:书写设计业务处理对象的类,例如用户类,文章类,订单类#
    ii.书写格式#
    @Data //Lombok自动生成
    public class 类名 {
        //TODO 类的具体属性
    
        //TODO 无参构造
    
        //TODO 其他构造
    }

    :::warning Lombok的注解

    使用@Data注解,Lombok会自动为我们生成

    1. 所有字段的 getter 方法

    2. 所有非 final 字段的 setter 方法

    3. equals() 方法,用于比较对象的相等性

    4. hashCode() 方法,用于生成对象的哈希码

    5. toString() 方法,用于生成对象的字符串表示

      :::

    (3).Mapper : Mybatis映射#

    i.功能:书写方法,为程序驱动数据库操作时指定对应的表中的对应的CRUD操作。#
    ii.书写格式#
    @Mapper
    public interface customMapper{
        @Select("SELECT * FROM user WHERE username = #{username}")
        User getUserByUsername(String username);
    
        @Insert("INSERT INTO user (username, password, score) VALUES (#{username}, #{password}, #{score})")
        @Options(useGeneratedKeys = true, keyProperty = "id")
        int addUser(User user);
    
        @Update("UPDATE user SET password = #{password}, score = #{score} WHERE username = #{username}")
        int updateUser(User user);
    
        @Delete("DELETE FROM user WHERE username = #{username}")
        int deleteUserByUsername(String username);
    
        //其他注解接口
    }

    (4).Service : 服务(接口)及其实现类#

    i.功能:作为Controller和Mapper之间沟通的桥梁,负责校验数据合法性,用户权限合法性等等。业务处理的大部分逻辑判断都在这儿。#
    ii.书写格式#
    public interface customService{
        //自定义方法头定义
    }
    public class customServiceImpl implements customService{
        //自定义方法实现
    }

    3.Application.yml配置#

    application.yml在默认创建的目录中没有出现,需要修改application.properties后缀为application.yml即可。它是Springboot程序运行前自动读取的配置文件,包括外放端口号,数据库信息,电子邮件配置等等。

    #application.yml
    spring:
      datasource:
          url: jdbc:mysql://localhost:3306/tests 
          #jdbc数据库链接 格式为:jdbc:mysql://数据库服务器地址:端口/数据库名
          username: root
          #数据库账号
          password: root
          #数据库密码
          driver-class-name: com.mysql.cj.jdbc.Driver
          #数据库驱动名
          
    #以上是MySQL的驱动配置,更多其他配置大家可在网上查阅

    4.RESTFUL#

    RESTFUL API是一种针对跨设备跨平台前后端开发的一种规范。

    以下是一个能够携带状态码返回数据给前端的数据实体类。

    @Data
    public class RestBean<T> {
        private int status;
        private boolean success;
        private T message;
    
        public RestBean(int status, boolean success, T message) {
            this.status = status;
            this.success = success;
            this.message = message;
        }
    
        public static <T> RestBean<T> success() {
            return new RestBean<>(200, true, null);
        }
    
        public static <T> RestBean<T> success(T data) {
            return new RestBean<>(200, true, data);
        }
    
        public static <T> RestBean<T> failure(int status, T data) {
            return new RestBean<>(status, false, data);
        }
    }

    :::tip 状态码

    使用适合的状态码很重要,而不应该全部都返回状态码 200

    状态码,可根据以下标准按照项目扩展自身状态码:

    200~299段 表示操作成功:

    • 200 操作成功,正常返回
    • 201 操作成功,已经正在处理该请求

    300~399段 表示参数方面的异常:

    • 300 参数类型错误
    • 301 参数格式错误
    • 302 参数超出正常取值范围
    • 303 token过期
    • 304 token无效

    400~499段 表示请求地址方面的异常:

    400 找不到地址

    500~599段 表示内部代码异常:

    500 服务器代码异常

    请求方式#

    • 【GET】 /users # 查询用户信息列表
    • 【GET】 /users/1001 # 查看某个用户信息
    • 【POST】 /users # 新建用户信息
    • 【PUT】 /users/1001 # 更新用户信息(全部字段)
    • 【PATCH】 /users/1001 # 更新用户信息(部分字段)
    • 【DELETE】 /users/1001 # 删除用户信息
    • 【PATCH】一般不用,用【PUT】