ITPub博客

首页 > 数字化转型 > 其他 > Spring Boot初始入门让你案例让我学到了什么

Spring Boot初始入门让你案例让我学到了什么

其他 作者:风启Sys 时间:2026-10-15 11:16:50 0 删除 编辑

前言

大家好,我是歌谣✨ B 站、知乎、C 站、抖音多平台同步更新,专注 AI 背景下的后端技术学习。

最好的种树是十年前,其次是现在。 我是一名热爱写作、坚持持续学习的技术革新者。 深耕 Java 后端、工作流引擎、项目实战,结合 AI 时代的技术趋势,拆解工程落地、源码与业务架构。

能关注到我的,大多是热爱学习、年轻上进的技术伙伴。 欢迎私信一起交流后端、探讨技术问题,结伴学习,共同成长。

开篇

从零初始化一个 Spring Boot 项目:那些"开始之前"就想清楚的事

最近又从零搭了一个 Spring Boot 项目。说"又",是因为这事儿干过太多次了——但每次重新面对那个空白的 Initializr 页面,反而比写业务代码时更慎重。慢慢意识到: 初始化项目这件事,看似是"起点",其实是最需要工程判断力的时刻之一

搭建核心文件

pom.xml

package 
com.example.demo;



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

@RestController
public class  UserController {
@GetMapping ( "/test" )
public  String  test (){
return  " 手动创建 SpringBoot 项目成功 " ;
    }
}

运行结果

    http://localhost:8080/test输出:手动创建SpringBoot项目成功

    学习点1:parent是什么

      <parent>    <groupId>org.springframework.boot</groupId>    <artifactId>spring-boot-starter-parent</artifactId>    <version>2.7.15</version></parent>
      这是 Maven 的继承(parent),当前项目继承 SpringBoot 官方父工程 spring-boot-starter-parent,版本锁定为 2.7.15(SpringBoot2.7.15)。
      统一管理所有依赖版本(最核心)
      父工程里面预先定义好了 Spring 全家桶、mybatis、lombok、mysql 驱动等大量组件的版本。 👉 你在子项目引入 starter 依赖时, 不需要写版本号,父工程自动提供匹配版本,避免版本冲突。
        <!-- 不用写version,由父工程2.7.15统一管理 --><dependency>    <groupId>org.springframework.boot</groupId>    <artifactId>spring-boot-starter-web</artifactId></dependency>
        内置默认的 Maven 编译、编码配置已经预设:源码编码 UTF-8
        默认 maven 编译插件配置打包相关默认配置
        ⚠️ 注意:SpringBoot2.7.15 默认 JDK 是 8。 你刚才出现的警告 源发行版17 需要目标发行版17,就是 pom 继承了 2.7.15(预期 JDK8),但是 IDEA 项目设置成 JDK17,版本冲突。
        预置打包插件默认配置
        内置 spring-boot-maven-plugin的基础配置,方便直接打成可执行 jar 包。

        学习点2:starter是什么

          <dependency>    <groupId>org.springframework.boot</groupId>    <artifactId>spring-boot-starter-web</artifactId></dependency>
          spring-boot-starter-web:SpringBoot 用来开发 Web 接口(HTTP 接口、Controller)的启动器(starter)
          1. Starter 是什么
          starter 就是 一套预先整合打包好的依赖集合,不用我们一个个手动引入 SpringMVC、Tomcat 等 jar 包。

          因为你的项目继承了 spring-boot-starter-parent 2.7.15,所以 不需要写 version 标签,父工程自动匹配 2.7.15 对应的版本。

          2. 里面自动包含的组件
          Spring MVC
          :用来写@RestController、@GetMapping,接收前端 http 请求,就是我们写接口的核心框架
          嵌入式 Tomcat
          :内置 web 服务器, 不用单独装 Tomcat,项目 main 方法直接启动就能监听 8080 端口,对外提供 http 服务
          配套:json 序列化(jackson)、http 消息转换器、web 基础工具类
          3. 能干什么
          ✅ 写后端 REST 接口,接收前端 / Postman 的 http 请求 ✅ 参数接收@RequestBody、@RequestParam✅ 返回 json 数据 ✅ 异常处理器、拦截器、跨域配置等 web 相关能力

          学习点3:启动类解释

            @SpringBootApplicationpublic class DemoApplication {    public static void main(String[] args) {        SpringApplication.run(DemoApplication.class, args);    }}
            整体作用
            这是 SpringBoot 项目的启动类,程序入口,运行 main 方法就能启动整个 SpringBoot 项目。
            1. @SpringBootApplication 注解(核心)
            它是 复合注解,等价于下面三个注解组合:
            @Configuration
            @EnableAutoConfiguration
            @ComponentScan
            @Configuration
            :标记当前类为配置类,可以注册 Bean。
            @EnableAutoConfiguration
            : 自动装配。SpringBoot 根据你引入的 starter 依赖,自动推断并创建对应的 Bean(比如引入 web starter 就自动装配 Tomcat、SpringMVC,不用手动写 xml 配置)。
            @ComponentScan
            : 组件扫描。默认扫描 当前类所在包以及所有子包下的@Controller、@Service、@Component、@Repository,把这些类交给 Spring 容器管理。

            ⚠️面试高频坑:Controller 必须放在启动类同级包或者子包,否则扫描不到,接口 404。

            2. main 方法
            Java 标准程序入口方法。
            SpringApplication.run(DemoApplication.class, args);
            SpringApplication.run()
            :SpringBoot 提供的启动方法
            第一个参数 DemoApplication.class:告诉 Spring,以这个类作为启动配置入口
            args
            :接收命令行启动参数(比如 java -jar 启动时传入的外部参数)
            执行这行代码,会做几件事:
            初始化 Spring 上下文(IOC 容器)
            触发自动配置
            如果引入 web starter,会启动内置 Tomcat 服务器,监听端口,等待 HTTP 请求

            面试精简口述版

            这是 SpringBoot 启动类。@SpringBootApplication是组合注解,包含配置、自动装配、包扫描功能;main 方法是程序入口,调用 SpringApplication.run () 来初始化 IOC 容器、加载自动配置,web 项目同时启动内置 Tomcat。

            测试案例

            package 
            com.example.demo;
            
            

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

            @SpringBootApplication
            public class  DemoApplication {

            public static void  main (String[] args) {
            //        SpringApplication.run(DemoApplication.class, args);
            ApplicationContext context = SpringApplication. run (DemoApplication. class , args);

            //  获取所有 bean 定义名称
            //        String[] beanNames = context.getBeanDefinitionNames();
            //        System.out.println("===== 容器中所有 Bean 列表 =====");
            //        for (String name : beanNames) {
            //            System.out.println(name);
            //        }
            UserController userController = context.getBean(UserController. class );
                    System. out .println(userController);
                }

            }

            输出

              com.example.demo.UserController@58015e56

              结语

              搭一个 Spring Boot 项目,技术上真的不难——勾几个依赖,写个 main 方法,跑起来就行。
              但 "能跑起来"和"跑得好、跑得久",中间隔着的就是初始化时那几十分钟的思考深度。
              一个项目的气质——是轻盈还是臃肿、是规整还是混乱、是容易接手还是让人望而生畏——往往在它还是个空壳子的时候,就已经注定了。
              所以现在每次初始化新项目,我都会慢一点。多想想依赖、多定定规范、多铺铺地基。 因为那几十分钟省下来的思考,后期要用几十个小时来还。


              来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/70051332/viewspace-3185676/ ,如需转载,请注明出处,否则将追究法律责任。

              上一篇: 没有了~
              请登录后发表评论 登录
              全部评论

              注册时间:2022-11-16

              • 博文量
                2
              • 访问量
                1411