SpringBoot 初学阶段知识点汇总(一)

一、SpringBoot 简介

1 定义

SpringBoot 是简化 Spring 开发的框架,整合整套 Spring 技术栈,是 JavaEE 一站式开发解决方案,俗称开发脚手架。

2 优势

  1. 快速创建独立可运行 Spring 项目,无缝集成主流框架
  2. 内嵌 Tomcat 等 Servlet 容器,无需打包 war
  3. Starter 场景启动器,自动管理依赖与版本
  4. 大量自动装配,极少配置,开箱即用,无 XML 冗余配置
  5. 内置运行监控,适配云原生开发

3 微服务概念

  1. 发展历程:Servlet → SSH → SSM → 单体架构 → SOA → SpringCloud 微服务
  2. 微服务定义:将大型应用拆分为多个小型独立业务服务,服务间通过 HTTP 通信,松耦合、可单独部署升级。
  3. 单体架构:所有业务代码整合为一个项目,ALL IN ONE。

4 微服务优缺点

优点

  • 单一服务职责单一,聚焦业务
  • 小团队独立开发维护,迭代高效
  • 服务解耦,开发、部署互不干扰
  • 支持多语言异构开发
  • 灵活自动化部署、弹性扩容
  • 可适配低配服务器,易对接第三方系统
  • 服务可独立数据库存储

缺点

  • 运维操作量大幅增加
  • 分布式架构复杂度高,排查问题困难
  • 服务数量越多,集群管理成本越高

二、开发环境准备

1 环境版本约束

  • JDK:1.8 及以上
  • Maven:3.3.x 及以上
  • 开发工具:IDEA、STS
  • SpringBoot:2.0.x 适配 Spring5

2 Maven 全局 JDK 配置

修改settings.xml,固定编译版本

XML 复制代码
<profile>
<id>jdk‐1.8</id>
<activation>
     <activeByDefault>true</activeByDefault>
<jdk>1.8</jdk>
</activation>
<properties>
     <maven.compiler.source>1.8</maven.compiler.source>
     <maven.compiler.target>1.8</maven.compiler.target>
     <maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
</properties>
</profile>

三、第一个 SpringBoot HelloWorld

1 实现步骤

  1. 创建普通 Maven Jar 工程
  2. 引入 SpringBoot 父工程与 web 启动器依赖
XML 复制代码
<!-- 父工程统一版本管理 -->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring‐boot‐starter‐parent</artifactId>
<version>1.5.9.RELEASE</version>
</parent>

<dependencies>
<!-- web场景启动器 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring‐boot‐starter‐web</artifactId>
</dependency>
</dependencies>
  1. 编写启动主类
java 复制代码
@SpringBootApplication
public class HelloWorldMainApplication {
    public static void main(String[] args) {
        SpringApplication.run(HelloWorldMainApplication.class,args);
    }
}
  1. 编写请求控制器
java 复制代码
@Controller
public class HelloController {
   @ResponseBody
   @RequestMapping("/hello")
   public String hello(){
      return "Hello World!";
   }
}
  1. 运行主类,浏览器访问localhost:8080/hello测试
  2. 打包插件,支持 jar 包一键部署
XML 复制代码
<build>
   <plugins>
     <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring‐boot‐maven‐plugin</artifactId>
     </plugin>
   </plugins>
</build>

打包后执行命令运行:java -jar xxx.jar

2 Hello 项目原理剖析

  1. 父工程 spring-boot-starter-parent继承版本仲裁父类,统一管控所有依赖版本,常规依赖无需手动指定版本。

  2. 场景启动器 Starter 按需引入对应 starter,自动导入该场景全部依赖包,web、数据库、缓存均对应专属启动器。

  3. 主启动注解 @SpringBootApplication 组合核心注解:

  • @SpringBootConfiguration:标识当前为配置类
  • @EnableAutoConfiguration:开启自动装配
  • @ComponentScan:自动扫描当前包及子包下所有组件

自动装配流程 启动时加载META-INF/spring.factories文件,读取所有自动配置类,自动创建组件、完成参数装配,替代手动 XML 配置。

四、Spring Initializer 快速创建项目

IDEA 内置 Spring 初始化向导,联网快速生成工程:

  1. 自动生成启动主类
  2. resources 目录结构
  • static:存放 js、css、图片静态资源
  • templates:模板页面目录,默认不支持 JSP
  • application.properties:全局核心配置文件

五、SpringBoot 配置文件

1 热部署配置

修改代码无需重启项目,提升开发效率 引入依赖:

XML 复制代码
<dependency> 
<groupId>org.springframework.boot</groupId> 
<artifactId>spring-boot-devtools</artifactId> 
<optional>true</optional> 
</dependency>

修改后快捷键Ctrl+F9触发热更新。

2 配置文件格式

固定文件名二选一:

  • application.properties:传统键值配置
  • application.yml:缩进式轻量化配置,以数据为中心

3 YAML 基础语法

  1. 键值格式:k: 空格 v,空格不可省略
  2. 空格缩进控制层级,同级左对齐
  3. 大小写敏感
  4. 字符串默认无需引号,双引号转义特殊字符,单引号原样输出
  5. 对象、数组均依靠缩进层级标识

4 配置文件属性注入

  1. 导入配置提示依赖
XML 复制代码
<dependency>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring‐boot‐configuration‐processor</artifactId>
     <optional>true</optional>
</dependency>
  1. 两种取值方式
  • @Value:零散获取单个配置值
  • @ConfigurationProperties:JavaBean 批量绑定配置
  1. 配置数据校验 搭配@Validated、数据格式注解校验配置合法性

5 专属注解使用

  • @PropertySource:加载自定义外部配置文件
  • @ImportResource:兼容导入老式 Spring XML 配置
  • @Configuration + @Bean:注解式向容器注册组件,SpringBoot 推荐用法

6 配置占位符

  1. 随机数:${random.int}${random.uuid}
  2. 默认值写法:${key:默认值}

7 Profile 多环境切换

  1. 多环境配置文件命名:application-dev.ymlapplication-prod.yml
  2. yml 多文档块区分环境
  3. 激活方式:配置文件指定、命令行参数、虚拟机参数

8 配置文件加载优先级

优先级从高到低,高优先级覆盖低优先级,多文件互补生效

  1. 项目根目录 config 文件夹
  2. 项目根目录
  3. 类路径 config 文件夹
  4. 类路径根目录

9 外部配置加载顺序

命令行参数 > 系统环境 > 项目外配置 > 项目内配置 > 默认配置

六、SpringBoot 自动配置原理

1 执行流程

  1. 主类@EnableAutoConfiguration开启自动装配
  2. 扫描项目所有 jar 中spring.factories
  3. 加载全部 xxxAutoConfiguration 自动配置类
  4. 依据条件注解判断配置类是否生效
  5. 生效后自动创建组件,绑定配置文件参数

2 条件注解 @Conditional 系列

满足条件才创建组件、生效配置

  • @ConditionalOnClass:存在指定类才生效
  • @ConditionalOnMissingBean:容器无对应 Bean 才创建
  • @ConditionalOnWebApplication:Web 环境生效

3 查看自动配置报告

配置debug=true,控制台打印自动配置匹配日志,区分生效 / 未生效配置类。

4 自动配置

  1. 项目启动批量加载内置自动配置类
  2. 按需匹配场景配置,自动装配常用组件
  3. 组件属性绑定配置文件,自定义修改默认参数
  4. 无需手动创建 Bean、编写 XML 配置
相关推荐
sulikey8 分钟前
个人Linux操作系统学习笔记11 - 环境变量
linux·笔记·学习
止语Lab1 小时前
好的 DX 不等于少写代码——三种语言的摩擦力设计课
后端
吃饱了得干活1 小时前
别再手动解析 LLM 输出了!LangChain 四种结构化输出方案对比
后端·python·langchain
程序员天天困1 小时前
Arthas trace 命令怎么用?一行定位最慢那行代码
jvm·后端
Huiturn1 小时前
GPT 5.6 连续编码 10 小时,纯 Python 啃下 Word 二进制格式——doc2docx 实现拆解
后端
dkbnull1 小时前
Spring Boot请求处理组件对比详解
java·spring boot
用户298698530141 小时前
Python 实现 Excel 与 Markdown 互转的实用指南
后端·python·excel
不能只会打代码1 小时前
Day 011 — Spring 全家桶深度拆解
spring boot·mybatis·spring aop·spring mvc·spring ioc
用户77283104908401 小时前
krono-job:零侵入、单二进制交付的分布式任务调度平台(开源)
后端
Conan在掘金1 小时前
鸿蒙报错速查:Function lacks ending return statement,返回路径漏 return 就炸,根因 + 真解法
后端