小白手把手教学怎么用maven创建一个Springboot项目

spring_boot

⼀个使⽤了 Spring Boot 的项⽬⼯程,本质上来说和只使⽤ Spring Framework 的⼯程 是⼀样的,如果使⽤ Maven 来管理,那它就是个标准的 Maven ⼯程,⼤概的结构就 像下⾯这样。

|-pom.xml 
|-src 
  |-main 
    |-java 
    |-resources 
  |-test 
    |-java 
    |-resources
  • pom.xml 中管理了整个项⽬的依赖和构建相关的信
  • src/main 中是⽣产的 Java 代码和相关资源⽂件;
  • src/test 中是测试的 Java 代码和相关资源⽂件。

POM文件分为以下几个部分:

  1. ⼯程⾃⾝的 GroupId 、 ArtifactId 与 Version 等内容定义;
  2. ⼯程继承的 org.springframework.boot:spring-boot-starter parent 定义;
  3. <dependencies/> 依赖项定义;
  4. 构建相关的配置定义。

org.springframework.boot:spring-boot-starter-parent ⼜继承了 org.springframework.boot:spring-boot-dependencies ,它通过定义了⼤量的依赖项,有了 的加持,在我们⾃⼰的⼯程中,只需要在 中写⼊依赖项的 .

用maven创建一个SpringBoot项目

基础配置:

JDK1.8+IDEA2021版本+maven3.3.9

image-20241029190649516

1.什么是Maven?

Maven是一个项目管理工具,它包含了一个对象模型。一组标准集合,一个依赖管理系统。和用来运行定义在生命周期阶段中插件目标和逻辑。

核心功能 :Maven的核心功能是合理叙述项目间的依赖关系,通俗点 就是通过pom.xml文件的配置获取jar包不用手动的去添加jar包,,这个pom.xml包我后面会叙述,不过已经学习过maven的 人应该对这个很熟悉。其本质就是通过配置pom.xml来获取jar包,当然这是在该项目必须是maven项目的前提下。那么什么是maven项目

image-20241029192647986

通过图解可以发现maven工程不直接将jar包导入到工程中,而是通过再pom.xml中添加所需的jar包的坐标,这样就避免了jar直接引入进来,在需要用到jar包的时候,只要查找pom.xml文件,再通过pom.xml中的坐标,到一个专门用于存放jar包的仓库中根据坐标从而找到这些jar包,再把这些jar包拿去运行

通过 pom.xml 文件配置要引入的 jar 包的坐标,再读取坐标并到仓库中加载 jar 包,这 样我们就可以直接使用 jar 包了,为了解决这个过程中速度慢的问题,maven 中也有索引的概念,通过建立索引,可以大大提高加载 jar 包的速度,使得我们认为 jar 包基本跟放在本地的工程文件中再读取出来的速度是一样的。这个过程就好比我们查阅字典时,为了能够加快查找到内容,书前面的目录就好比是索引,有了这个目录我们就可以方便找到内容了,一样的在 maven 仓库中有了索引我们就可以认为可以快速找到 jar 包。

2. 项目

现在我们继续创建新项目

image-20241029192840210

image-20241029192923321

配置maven

创建好之后我们可以看到只有这么一些文件内容和文件目录,现在我们要做的第一件事就是配置maven

image-20241029193049379

文件->设置里面找到maven配置,红框里面的就是需要我们手动配置的地方。

image-20241029190722019

这是我的配置目录,这个maven仓库就是存放项目需要的各种依赖的地方。并且我们要在系统变量里添加才能使用

image-20241029193337376

因为我们使用的是本地仓库,在这个settings文件里可能默认使用的是服务器端的仓库,所以还要在代码里改一下

image-20241029193604474

这样的话,项目所有需要的依赖就准备好了

image-20241029193656631

建立新启动项

image-20241029194127858

现在我们在项目里新建了一个模块module1,在pom文件里添加依赖项

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

image-20241029194710601之后我们新建软件包来存放启动类

image-20241029195102516

image-20241029195700221

在导包的时候遇到这种问题就清除一下缓存然后重新启动。

image-20241029195808023

package com.ivanlee.springboot;

import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.SpringApplication;

@SpringBootApplication
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class,args);
    }

}

创建application.yml配置文件:设置端口号

image-20241029200605142

这样的话直接运行我们的启动类就可以访问网页了

image-20241029200903036

image-20241029201023672

访问刚才yaml文件里的配置,能得到一张空白页面,因为还没有写controller相关的东西,所以什么都没有

image-20241029201110258

controller

需要注意的是controller的类文件必须要放在和启动类同级以及更低一级的目录里面,不能比启动类高,否则启动时将无法扫描到controller里面的路径导致404.

image-20241030094250237

package com.ivanlee.springboot.controller;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;


@RestController
@RequestMapping("/regina")
public class FirstController {
    @GetMapping("/127")
    public String test(){
        System.out.println("hello world");
        return "hello world";
    }
}

@RestController 和 @Controller 是 Spring Framework 中用于定义控制器的注解。

@RestController 是一个组合注解,它结合了 @Controller 和 @ResponseBody 注解的功能(就相当于把两个注解组合在一起)。在使用 @RestController 注解标记的类中,每个方法的返回值都会以 JSON 或 XML 的形式直接写入 HTTP 响应体中,相当于在每个方法上都添加了 @ResponseBody 注解。
@Controller 注解标记的类则是传统的控制器类。它用于处理客户端发起的请求,并负责返回适当的视图(View)作为响应。在使用 @Controller 注解的类中,通常需要在方法上使用 @ResponseBody 注解来指示该方法的返回值要作为响应的主体内容,而不是解析为视图。

 简而言之,@RestController 适用于构建 RESTful 风格的 API,其中每个方法的返回值会直接序列化为 JSON 或 XML 数据并发送给客户端。而 @Controller 适用于传统的 MVC 架构,它负责处理请求并返回相应的视图。(@RestController下的方法默认返回的是数据格式,@Controller注解标注的类下面的方法默认返回的就是以视图为格式)

image-20241030094924208

访问该路径便得到了一个前端的响应。如果一直发生404,那么可以点击maven里面的clean按钮,把之前的错误导入清掉再继续。image-20241030095034864

posted @ 2024-10-30 09:54  ivanlee717  阅读(92)  评论(0编辑  收藏  举报