转载

超详细从0开始搭建 Spring Boot 项目

这个项目,我是打算作为种子项目的,作为种子项目,必须的“开箱即用”,必须要包含大部分 web 开发的相关功能,后期所有的 Spring Boot 项目都是将这个项目拿来,简单修改一下配置,就可以快速开发了。

1.0.0 创建项目

我使用的ide 是 idea

创建项目

超详细从0开始搭建 Spring Boot 项目

选择 Spring initializr ,如果点Next一直在转圈,可能是start.spring.io/ 在国外,访问比较慢。可以科学上网或者,使用自定义的start.spring.io/

超详细从0开始搭建 Spring Boot 项目

主要改以下组织名称、项目名称和项目描述就好了

超详细从0开始搭建 Spring Boot 项目

我创建项目的时候, Spring Boot 最新稳定版是 2.1.9 。要用就用最新的!!! 依赖先都不勾选,后期一项一项加

超详细从0开始搭建 Spring Boot 项目

项目文件夹名称以及存放位置

超详细从0开始搭建 Spring Boot 项目

添加maven镜像

添加maven镜像加快依赖下载速度

<repositories>
    <repository>
        <name>华为maven仓库</name>
        <id>huawei</id>
        <url>https://mirrors.huaweicloud.com/repository/maven/</url>
    </repository>
</repositories>

<pluginRepositories>
    <pluginRepository>
        <name>华为maven插件仓库</name>
        <id>huawei_plugin</id>
        <url>https://mirrors.huaweicloud.com/repository/maven/</url>
    </pluginRepository>
</pluginRepositories>
复制代码

pom 文件

整体 .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.1.9.RELEASE</version>
        <relativePath/>
    </parent>

    <groupId>com.wqlm</groupId>
    <artifactId>boot</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>boot</name>
    <description>Spring Boot Demo</description>

    <properties>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

    <repositories>
        <repository>
            <name>华为maven仓库</name>
            <id>huawei</id>
            <url>https://mirrors.huaweicloud.com/repository/maven/</url>
        </repository>
    </repositories>

    <pluginRepositories>
        <pluginRepository>
            <name>华为maven插件仓库</name>
            <id>huawei_plugin</id>
            <url>https://mirrors.huaweicloud.com/repository/maven/</url>
        </pluginRepository>
    </pluginRepositories>

</project>
复制代码

依赖结构图

超详细从0开始搭建 Spring Boot 项目

番外

观察仔细的人应该发现了, spring-boot-starterspring-boot-starter-test 都没有指定版本,那它们是怎么确定版本的?

参考 为什么 maven 依赖可以不指定版本

1.0.1 添加 web 模块

在 pom 文件中添加 web 模块

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>
复制代码

由于 spring-boot-starter-web 包含 spring-boot-starter

超详细从0开始搭建 Spring Boot 项目

建议删掉如下 spring-boot-starter 依赖,以保证依赖的干净整洁

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter</artifactId>
</dependency>
复制代码

作用

引入 spring-boot-starter-web 后,我们可以

  • 编写 web 应用
  • 不需要配置容器即可运行 web 应用
  • 对请求参数进行校验
  • 将业务结果对象转换成 josn 返回

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.1.9.RELEASE</version>
        <relativePath/>
    </parent>

    <groupId>com.wqlm</groupId>
    <artifactId>boot</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>boot</name>
    <description>Spring Boot Demo</description>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

    <repositories>
        <repository>
            <name>华为maven仓库</name>
            <id>huawei</id>
            <url>https://mirrors.huaweicloud.com/repository/maven/</url>
        </repository>
    </repositories>

    <pluginRepositories>
        <pluginRepository>
            <name>华为maven插件仓库</name>
            <id>huawei_plugin</id>
            <url>https://mirrors.huaweicloud.com/repository/maven/</url>
        </pluginRepository>
    </pluginRepositories>

</project>
复制代码

依赖结构图

超详细从0开始搭建 Spring Boot 项目
从图中我们可以看到 spring-boot-starter-web

引入了几个关键的依赖

  • spring-boot-starter
  • spring-boot-starter-tomcat :spring boot 不需要 tomcat 也能启动就是因为它
  • spring-webmvc
  • spring-web
  • spring-boot-starter-json : 有了它,就可以使用 @ResponseBody 返回 json 数据
    • jackson :spring boot 默认的 json 解析工具
  • hibernate-validator :提供参数校验的注解,如 @Range、@Length
    • javax.validation :提供参数校验的注解,如 @NotBlank、@NotNull、@Pattern

关于参数校验请参考 参数校验 Hibernate-Validator

1.0.2 集成 mysql

Spring Boot 集成 mysql 需要 JDBC 驱动mysql 驱动

引入依赖

<!--JDBC-->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>

<!--mysql-->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
</dependency>
复制代码

版本号可以不用填,spring boot 配置了默认的版本号。例如 spring boot 2.1.9.RELEASE 对于的 mysql-connector-java 版本为 8.0.17

配置 mysql

根据 mysql-connector-java 版本不同,配置的内容也有些许差异

# mysql-connector-java 6.0 以下版本配置
spring.datasource.driverClassName=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/boot?useUnicode=true&characterEncoding=utf-8&useSSL=false
spring.datasource.username=root
spring.datasource.password=123456

复制代码
# mysql-connector-java 6.0及以上版本配置
spring.datasource.driverClassName=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/boot?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Shanghai
spring.datasource.username=root
spring.datasource.password=123456
复制代码
原文  https://juejin.im/post/5da286bfe51d4577f9285c5e
正文到此结束
Loading...