Spring Boot 项目从入门到排障:核心结构、依赖管理与启动全解析

1.jar包下载不下来的处理方法:

1.确认国内源

1.1找到依赖,摁住ctrl 看到或者版本号以及他的全写

复制代码

1.2去Java 依赖库查询工具网站寻找Maven Repository: Search/Browse/Explore

1.3寻找是否有自己的写的国内源存在

如果有就是是正确的,没有选择正确的国内源

2.确认依赖坐标是否正确

返回来看依赖的坐标是否是对的

3.再次刷新,多次刷新

就是一直点击刷新,一般第一次有问题,多次刷新maven就又可能好了

4.切换网络(热点,其他的流畅的网络),并删除本地仓库的jar包(可能没有下完,删除重新下载)

找到你设置的仓库位置,根据你的文件路径,找到你的本地仓库

删除仓库

找到了,删除所有的仓库里的东西

回到maven刷新重新下载

看到这右下角又重新下载啦

但是如果是右边一部分爆红的话,就是ctrl看他的地址,然后在这个路径下寻找该文件,删除重新下载

寻找里面的版本,把这个版本删除,重新刷新

从第一个路径下一次寻找

因为不管他存不存在,他都会有这个文件夹 ,不存在换正确的国内源的版本

5.添加版本(插件最好使用这个办法最简单了)

就是在这个路径下

写一个版本号

ctrl看一下他的版本就加上即可

2.排除依赖的方法

有冲突不一定要排包

1.要看他项目的实际使用的版本是多少

2.要看他的运行结果是否正确

首先乍一看,看起来挺多的,其实就引入了两个包

2.1如我们首先多加一个依赖,与他冲突

java 复制代码
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-core</artifactId>
    <version>6.2.1</version>
</dependency>

2.2刷新一下,看看有没有冲突

2.3.点击冲突,就会出现冲突

那我们根据这个冲突得到这个项目中,我们用的版本是6.2.1

spring-boot-starter-web使用的是3.5.8

那也就是我们这个项目中既有3.5.8也有6.2.1这两个版本的spring-core

也就是我们需要相关的排除一下依赖即可使用6.2.14

2.4选择使用哪个版本

2.4.1使用项目使用的版本

不需要排依赖,因为此项目使用的就是此版本

在依赖中,默认使用最短路径的这个版本

什么是最短路径呢?

就是字面意思,最短长度的路径,比如说,我们这个版本使用的是6.2.1他是我们直接引用的,不会在其他的路径下

上面spring-core的是套了三层的路径下的使用

下面的spring-core 是直接使用的,路径是最短的,所以项目使用这个作为项目使用的版本

路径长度越短,版本优先级越高

2.4.2使用这个使用版本冲突的版本呢

选择1:进行排除冲突以来

点击下来Exclude

选择2:直接使用最短路径,直接改项目的使用版本,比他那个冲突路径距离短就可以了,根据情况直接改

排完了,记得刷新一下

3.比较settings 的区别的diff工具

第一种:

在线或离线比较文本并查找差异 - Diffchecker

复制进去,对比即可

第二种:

copy一份对比

第三种:比较项目

4.认识.pom目录

1.Maven 的父 POM 配置

这个是 Maven 的父 POM 配置 ,具体是 Spring Boot 提供的spring-boot-starter-parent,它的核心作用是帮你简化 Spring Boot 项目的配置,统一管理依赖和构建规则,是 Spring Boot 项目的 "基础配置模板"。

它的核心功能一下这几点:

  1. 统一管理依赖版本 Spring Boot 的spring-boot-starter-parent里已经预定义了大量常用依赖的版本(比如 Spring 框架、MyBatis、Redis 客户端等),你在项目里引入这些依赖时,不用手动写<version>版本号,父 POM 会自动帮你匹配兼容的版本,避免版本冲突。

  2. 默认构建配置它预先配置了 Maven 的构建插件(比如编译插件、打包插件),包含:

    • 默认的 JDK 编译版本(比如 Spring Boot 3.x 默认用 JDK 17);
    • 统一的字符编码(UTF-8);
    • 资源文件的过滤规则;
    • 打包成可执行 Jar 的默认配置等。
  3. 简化 POM 结构有了这个父 POM,你的项目 POM 不用重复写这些通用配置,只需要专注于项目自身的依赖和业务配置。

2.Maven 项目的「元信息配置」

Maven 项目的「元信息配置」

  1. <groupId>:项目所属的组织 / 团队标识 比如com.ytvc是你团队 / 公司的包名前缀(通常用域名倒写,比如百度的项目会用com.baidu),用来区分不同组织的项目。
  2. <artifactId>:项目的唯一名称 这里是springbootdemo,是你这个项目在团队内的唯一标识(比如同一团队的不同项目,artifactId 会不同)。
  3. <version>:项目的版本号 0.0.1-SNAPSHOT表示这是 "0.0.1 版本的快照版"(SNAPSHOT代表开发中、未稳定的版本;如果是正式版会写成1.0.0.RELEASE)。
  4. <name>:项目的友好名称 就是给人看的项目名,这里和 artifactId 一样是springbootdemo
  5. <description>:项目的描述信息说明这个项目是干啥的,这里写了 "Spring Boot 的演示项目"。
  6. <url>:项目的主页地址比如项目的官网、Git 仓库主页,这里暂时是空的。
  7. <licenses>/<license>:项目的许可证信息比如用 Apache 许可证、MIT 许可证等(开源项目常用),这里没填。
  8. <developers>/<developer>:项目的开发者信息可以填开发者的姓名、邮箱、角色等,这里没填。
  9. <scm>:版本控制系统信息 比如项目的 Git/SVN 仓库地址(connection是仓库地址,url是仓库网页地址),这里也没填(初始化项目时默认是空的)

3.Maven 的「属性配置」

Maven 的「属性配置」 ,这里的<java.version>17</java.version>专门用来指定项目使用的 Java 版本,是 Spring Boot 项目中控制 JDK 版本的核心配置之一。

  1. 统一 JDK 版本 :告诉 Maven(以及 Spring Boot 的父 POM),项目的编译、运行都要使用 JDK 17(比如编译代码时支持 JDK17 的语法,打包后的程序也需要 JDK17 环境运行)。
  2. 自动同步编译插件 :Spring Boot 的spring-boot-starter-parent会读取这个java.version的值,自动配置 Maven 编译插件(maven-compiler-plugin)的sourcetarget参数(不用你手动写编译插件的版本和 JDK 版本)。

4.Web 开发场景的依赖包

  1. spring-boot-starter-web 这是Web 开发场景的依赖包,它帮你自动引入了 Web 开发需要的所有基础组件:

    • Spring MVC(处理 HTTP 请求、写 Controller 接口的核心框架);
    • 内置的 Tomcat 服务器(不用自己部署 Tomcat,项目启动时会自动启动内嵌 Tomcat);
    • JSON 解析工具(自动处理接口的 JSON 请求 / 响应)。引入它后,你就能直接写@RestController做接口开发了。

5.测试场景的依赖包

spring-boot-starter-test + <scope>test</scope> 这是测试场景的依赖包 ,包含了项目测试需要的工具(比如 JUnit、Spring Test 框架);而<scope>test</scope>是 Maven 的依赖范围,意思是:这个依赖只在 "写测试代码、运行测试" 的时候生效,项目打包、运行时不会包含它,避免冗余。

6.build

1. 配置「构建插件」

<build>下的<plugins>标签用来放各类构建插件,每个插件负责一个构建环节:

  • 比如spring-boot-maven-plugin:负责把项目打包成可执行 Jar、一键运行项目;
  • 比如默认的maven-compiler-plugin(Spring Boot 父 POM 自动配置):根据你<properties>里的java.version编译源码;
  • 还能加其他插件:比如代码检查插件、打包时跳过测试的插件等。

没有<build>里的插件配置,Maven 就不知道该怎么打包 Spring Boot 项目(只能打普通 Jar,没法直接运行)。

2. 定义「构建输出规则」

比如:

  • 指定打包后的 Jar/War 名称(默认是artifactId-version.jar,可自定义);
  • 配置构建产物的输出目录(默认是项目根目录的target文件夹,可改);
  • 控制打包时是否包含 / 排除某些文件。
3. 处理「资源文件」

比如<build>下的<resources>标签,能配置:

  • src/main/resources里的配置文件(比如application.yml)是否要替换变量(比如把${server.port}换成实际值);
  • 哪些资源文件要复制到打包后的 Jar 里,哪些要排除。
4. 自定义「构建生命周期」

Maven 有默认的构建阶段(clean→compile→test→package→install→deploy),<build>可以绑定自定义命令到这些阶段,比如:打包前自动执行代码格式化,或者部署前自动运行测试。

通俗总结

<build>比作「工厂的流水线配置」:

  • 你的源码是 "原材料";
  • <build>里的插件是 "流水线的工序"(编译、打包、质检等);
  • Maven 按照<build>的配置,一步步把 "原材料" 做成 "成品"(可运行的 Jar 包)。

7.插件

1. 打包成可执行的 Fat Jar/War

普通 Maven 打包的 Jar 只能当依赖用,没法直接运行;这个插件会把项目 + 所有依赖(比如 Spring 框架、Tomcat 等)打包成一个 "胖 Jar",并且自动配置好启动类(比如你的@SpringBootApplication类)。打包后直接用java -jar 项目包名.jar就能启动 Spring Boot 项目,不用额外部署 Tomcat。

2. 直接运行项目(开发调试用)

可以通过 Maven 命令不用打包就启动项目

java 复制代码
mvn spring-boot:run

适合开发阶段快速调试,改完代码后重启也很方便。

3. 配合 Spring Boot 的功能优化

比如:

  • 自动处理 Spring Boot 的依赖层级,避免打包后依赖缺失;
  • 配合spring-boot-devtools实现热部署(改代码后自动重启);
  • 生成项目的构建信息(比如版本、构建时间)等。

5.认识src

5.1.main

src下面有Java和resourses 两个文件夹

存放 Java 源代码的核心目录,是项目的业务逻辑代码所在位置。

  • com.spring.demo:项目的基础包(可自定义名称),用来组织代码。
  • HelloController:控制器类,负责接收前端 HTTP 请求(比如访问某个 URL),处理后返回响应(比如页面、JSON 数据)。
  • SpringbootdemoApplication :Spring Boot 的启动类 ,包含main方法,是项目的入口(运行这个类就能启动整个 Spring Boot 应用)。

5.1.1Java source root

5.1.2resource root

5.2.test sourse

存放项目的非代码资源文件

  • static:存放静态资源(比如 CSS 样式、JavaScript 脚本、图片等),前端页面可以直接访问这些文件。
  • templates:存放视图模板文件(比如 Thymeleaf/FreeMarker 的 HTML 模板),用于渲染动态页面。
  • application.properties :Spring Boot 的核心配置文件,用来配置项目的参数(比如服务器端口、数据库连接、日志级别等)。

5.2.1 Test sources root

5.2.2 标记文件夹

现在没有文件可以标记,先创建

点进去

注意:没有标记就是一个普通Java文件了

6.认识日志

6.1 认识版本号

6.2 这个是启动的进程,可以在任务管理器找到

也可以在cmd中找到

这个|是 Windows 命令行中的管道符 ,作用是把前一个命令的输出结果,作为后一个命令的输入

在你这条命令netstat -ano | findstr "8080"中:

  1. 前半部分netstat -ano:会输出所有网络连接的详细信息(包含端口、进程 ID 等);
  2. 管道符|:将netstat的输出内容 "传递" 给后面的findstr
  3. 后半部分findstr "8080":从前面传递来的内容中,筛选出包含 "8080" 的行。

6.3设置项目名称

6.4日志的一些相关信息

6.5 tomcat 的默认端口是8080

6.6tomacat 的使用版本

6.7项目初始化

1. 启动初始化阶段

  • 日志内容Starting SpringbootdemoApplication using Java 17.0.9...作用:确认应用启动类、运行的 JDK 版本、进程 ID(PID)及项目路径,标志应用开始启动。

2. 配置文件加载阶段

  • 日志内容No active profile set, falling back to 1 default profile: "default"作用:说明未指定自定义配置文件(profile),默认使用default环境的配置(对应application.properties)。

3. 内置服务器(Tomcat)初始化阶段

  • 日志内容Tomcat initialized with port 8080 (http)作用:初始化内置 Tomcat 服务器,指定 HTTP 服务端口为 8080(Spring Boot 默认端口)。

  • 日志内容Starting service [Tomcat]/Starting Servlet engine: [Apache Tomcat/10.1.49]作用:启动 Tomcat 服务及 Servlet 引擎,明确 Tomcat 版本。

4. Spring 上下文初始化阶段

  • 日志内容Initializing Spring embedded WebApplicationContext/Root WebApplicationContext: initialization completed in 832 ms作用:初始化 Spring Web 应用上下文(管理 Bean、配置等核心组件),并显示初始化耗时。

5. 启动完成阶段

  • 日志内容Tomcat started on port 8080 (http) with context path '/'作用:确认 Tomcat 成功启动,端口 8080、上下文路径为根路径(即访问地址为http://localhost:8080)。

  • 日志内容Started SpringbootdemoApplication in 1.686 seconds作用:标志应用完全启动,显示总启动耗时(含进程运行时间)。

相关推荐
麦麦鸡腿堡2 小时前
Java_通过反射获取类的结构信息
java·开发语言
还是鼠鼠2 小时前
SQL语句执行很慢,如何分析呢?
java·数据库·mysql·面试
爱装代码的小瓶子2 小时前
【c++知识铺子】封装map和set(详细版)
android·java·c++
2201_757830872 小时前
tlias的部门的增删改查操作
java·开发语言
雨雨雨雨雨别下啦3 小时前
Spring AOP概念
java·后端·spring
on the way 1233 小时前
day04-Spring之Bean的生命周期
java·后端·spring
代码笔耕3 小时前
面向对象开发实践之消息中心设计(二)
java·后端·架构
要开心吖ZSH3 小时前
应用集成平台-系统之间的桥梁-思路分享
java·kafka·交互
TsengOnce3 小时前
阿里云ECS多版本JDK切换
java·python·阿里云