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 配置
相关推荐
霸道流氓气质4 小时前
批量收集多源 URL 并异步转 PDF 打包下载的完整实现(Spring Boot + Feign + 异步任务)
windows·spring boot·pdf
ゆづき4 小时前
AI能否替代小说作家?
人工智能·笔记·学习·其他·生活
_李小白4 小时前
【android opencv学习笔记】Day 20: 形态学滤波的腐蚀与膨胀
笔记·学习
Rust研习社4 小时前
Rust 官方拟定 LLM 政策,防止 LLM 污染开源社区?
开发语言·后端·ai·rust·开源
做个文艺程序员4 小时前
第02篇:搭建 ES 集群 + Spring Boot 整合实战——从 Docker Compose 到 Java 客户端全覆盖
java·spring boot·elasticsearch
Hua-Jay4 小时前
OpenCV联合C++/Qt 学习笔记(二十五)----监督学习聚类及K均值聚类
c++·笔记·opencv·学习·计算机视觉·聚类
无风听海4 小时前
ASP.NET Core Minimal API 深度解析
后端·asp.net
斯特凡今天也很帅4 小时前
Spring Boot+mybatis项目切换sql为传参成无参
spring boot·sql·mybatis
IT_陈寒4 小时前
Java的finally块竟然不是你想的那个finally!
前端·人工智能·后端