从 0 开始创建 SpringBoot 项目

从 0 开始创建 SpringBoot 项目

环境准备

  • 操作系统:Windows 10
  • IDE:IntelliJ IDEA 2023.3.1
  • Java 版本:jdk1.8

工具网盘链接:Java 开发工具合集

创建项目

下面用最新的 IntelliJ IDEA 2023.3.1 演示新建一个 SpringBoot 工程。

选择 Spring Initializr,类型选 Maven,JDK 选 1.8,版本选 8。

在这里插入图片描述

注意这里换了 Spring Initializr 服务器 URL,默认的是不支持 Java 版本 8 的,只能选新的 21 或者 17,这会与 jdk1.8 不兼容。我们换成阿里云镜像网址:

在这里插入图片描述

选择 Spring Boot 版本及依赖,创建 Spring Web 工程:

Spring Boot 版本选择 2.7.6,依赖先添加 Lombok、Spring Web,之后自己按需添加。

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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.example</groupId>
    <artifactId>demo</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>demo</name>
    <description>demo</description>
    <properties>
        <java.version>1.8</java.version>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <spring-boot.version>2.7.6</spring-boot.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </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>
        </dependency>
    </dependencies>
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>2.7.6</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.1</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                    <encoding>UTF-8</encoding>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <version>2.7.6</version>
                <configuration>
                    <mainClass>com.example.demo.DemoApplication</mainClass>
                    <skip>true</skip>
                </configuration>
                <executions>
                    <execution>
                        <id>repackage</id>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

</project>

点击 Finish,如果是第一次创建,在右下角会提示正在下载相关依赖,项目创建完毕。

在这里插入图片描述

新建项目后,我们一般都需要配置编码,这点非常重要,很多初学者都会忘记这一步,所以要养成良好的习惯。IDEA 中,仍然是打开 File->settings ,搜索 encoding,配置一下本地的编码信息。如下所示:

在这里插入图片描述

确保设置和项目结构里的 Java 版本一致:

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

项目目录结构及说明

项目结构:

在这里插入图片描述

说明:

  • src/main/java/com/example/demo:存放Java代码。
    • controller/Controller.java:在 MVC 中,它直观的对应其中的 C。
    • entity/User.java:也有人叫 PO (Persistent Object),PO 这个名字直观地看出它对应数据库中的记录,它的每一个属性都对应一个字段。
    • mapper/UserMapper.java、UserMapper.xml:它的同类是 DAO (Data Access Object),显然它是用来处理数据的,它封装了 jdbc。Mybatis 是一种半自动化的 ORM 框架,所以 UserMapper.java 是一个 interface,而非 class,具体的 SQL 语句我们写在同级目录下的同名 xml 文件中。mapper 和 DAO 是两种可以互相取代实现方式,界限没有那么绝对。
    • service/UserService.java:它显然是用来实现服务的,这里一般定义一些接口。
    • service/impl/UserServiceImpl.java:这里实现 service 中的接口,当然可以不用分化那么细,不写接口直接写一个类也是没问题的。
    • DemoApplication.java:SpringBoot 程序执行的入口,执行该程序中的 main 方法,SpringBoot项目就启动了。
  • src/main/resources
    • static:存放静态资源,如图片、CSS、JavaScript 等。
    • templates:存放Web页面的模版文件。
    • application.properties或application.yml:用于存放程序的各种依赖模块的配置信息,比如服务端口、数据库连接配置等。

编写代码

在 com.example.demo 下新建一个 package,名叫 controller。

在这个文件夹下新建一个 Java 类:SpringBootController。

输入代码:

package com.example.demo.demos.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

/**
 * @BelongsProject:demo
 * @BelongsPackage:com.example.demo.demos.controller
 * @Author:Uestc_Xiye
 * @CreateTime:2023-12-15 21:19:05
 */

@Controller
public class SpringBootController {
   
    @RequestMapping(value = "/springBoot/index")
    @ResponseBody
    public String index(){
   
        return "Hello World!";
    }
}

注意:新创建的类一定要位于 Application 同级目录或下级目录,否则 SpringBoot 加载不到。

运行 DemoApplication 类的 main 方法,通过查看在控制台的输出,可以看到启动 SpringBoot 框架,会启动一个内嵌的 tomcat,端口号默认为 8080,上下文根为空:

在这里插入图片描述

在浏览器输入 http://localhost:8080/springBoot/index 访问,显示以下内容,说明配置成功了!

在这里插入图片描述

参考

【IDEA】Maven 项目打包 无效的目标发行版: 17 (全)

无法访问 org.springframework.stereotype.Controller

SpringBoot版本与JDK版本的对应关系

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-16 03:04:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-16 03:04:03       101 阅读
  3. 在Django里面运行非项目文件

    2023-12-16 03:04:03       82 阅读
  4. Python语言-面向对象

    2023-12-16 03:04:03       91 阅读

热门阅读

  1. 知识迁移加持下的自监督学习

    2023-12-16 03:04:03       60 阅读
  2. 第19节:Vue3 在模板中展开时的注意事项

    2023-12-16 03:04:03       61 阅读
  3. 使用Linux命令修改服务器时间及设置时区

    2023-12-16 03:04:03       62 阅读
  4. 【Python 千题 —— 基础篇】整数输入

    2023-12-16 03:04:03       60 阅读
  5. 数组练习之:二分查找法

    2023-12-16 03:04:03       51 阅读
  6. Android-Framework 默认横屏、dpi设置

    2023-12-16 03:04:03       74 阅读
  7. 11-二分-索引二分-第一个错误的版本

    2023-12-16 03:04:03       59 阅读
  8. nebula graph Q&A

    2023-12-16 03:04:03       60 阅读
  9. 计算机网络基础

    2023-12-16 03:04:03       61 阅读
  10. parser

    parser

    2023-12-16 03:04:03      51 阅读
  11. 小创学习记录

    2023-12-16 03:04:03       59 阅读
  12. 算法刷题系列:二分(一)

    2023-12-16 03:04:03       60 阅读