Spring 极简学习笔记(三)

Spring 极简学习笔记(三)

Spring

核心定位:Spring Boot 不是替代 Spring,而是简化 Spring + SpringMVC 开发的脚手架,解决原生框架配置繁琐、依赖冲突、部署复杂的痛点。

一、Spring Boot 核心宗旨

自动配置、按需加载、开箱即用、零XML配置

Spring Boot 核心优势:基于条件注解自动装配常用组件,统一管理依赖版本,默认适配主流开发场景,开发者仅需关注业务代码。

二、核心原理:自动配置

1. 启动注解核心

项目入口类唯一注解:@SpringBootApplication该注解是三合一复合注解,等价于以下三个核心注解:

  • @Configuration:标识当前类为配置类,替代传统 XML 配置文件

  • @EnableAutoConfiguration:开启 Spring Boot 自动配置核心功能

  • @ComponentScan:自动扫描当前包及子包下所有带注解的组件(@Controller、@Service、@Component 等),无需手动配置扫描路径

2. 自动配置底层逻辑

核心机制:条件注解装配Spring Boot 预置大量自动配置类(META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports),遵循「有依赖则自动装配,无依赖则不生效」原则。

常用条件注解:

  • @ConditionalOnClass:项目存在对应类时,触发自动配置

  • @ConditionalOnMissingBean:容器中没有开发者自定义 Bean 时,才使用默认配置(用户配置优先

通俗理解:你不配置,框架用默认配置;你自定义配置,框架自动覆盖默认配置,兼顾便捷与灵活。

三、Starter 启动器(核心依赖机制)

Spring Boot 最大简化设计:将一组相关依赖打包为一个 Starter,无需手动导入多个依赖、无需管理版本。

1. 核心特点

  • 版本统一管控:父工程 spring-boot-starter-parent 统一管理所有依赖版本,彻底解决版本冲突

  • 按需引入:需要什么功能,导入对应 Starter 即可

2. 开发高频必备 Starter

Starter 依赖

核心作用

spring-boot-starter-web

集成 SpringMVC、Tomcat、JSON 解析,用于 Web 接口开发(最核心)

spring-boot-starter-test

集成 JUnit、MockMvc,用于单元测试、接口测试

spring-boot-starter-jdbc

集成 JDBC、数据库连接池,简化数据库操作配置

spring-boot-starter-aop

集成 AOP 切面功能,用于日志、权限、事务切面处理

四、全局配置文件

Spring Boot 放弃 XML,使用application 全局配置文件,统一管理项目所有配置,优先级:application.yml > application.properties(推荐 yml 格式,层级清晰、简洁易读)

1. 高频基础配置

# 服务器配置 server: port: 8080 # 端口号 servlet: context-path: / # 项目访问根路径 # 日志配置 logging: level: root: info # 全局日志级别 com.xxx.service: debug # 指定包日志级别

2. 配置文件核心特性

  • 自动绑定:可通过@ConfigurationProperties将自定义配置绑定到实体类

  • 多环境切换:支持 dev(开发)、test(测试)、prod(生产)环境配置,通过参数一键切换

五、Web 开发简化(对比原生 SpringMVC)

1. 无需手动配置的组件(全自动装配)

  • 内置 Tomcat 服务器,无需单独部署 Tomcat

  • 自动配置视图解析器、字符编码过滤器(统一 UTF-8 编码)

  • 自动整合 Jackson,实现 JSON 数据自动序列化/反序列化

2. 接口开发极简模板(REST 风格)

@RestController // 复合注解:@Controller + @ResponseBody,直接返回JSON @RequestMapping("/demo") public class DemoController { @GetMapping("/hello") public String hello() { return "Spring Boot 极简开发"; } }

六、Bean 管理与自定义配置

1. 手动注册 Bean(替代 XML)

使用配置类 + @Bean 注解,手动创建、注入第三方组件 Bean

@Configuration public class WebConfig { // 手动注册拦截器、线程池等组件 @Bean public RestTemplate restTemplate() { return new RestTemplate(); } }

2. 核心原则

框架默认 Bean 不满足需求时,自定义 @Bean 覆盖默认配置,符合「约定大于配置」思想。

七、Spring Boot 核心总结

  1. 核心定位:简化 Spring 开发的脚手架,底层完全基于 Spring + SpringMVC,无新功能,仅简化配置
  2. 核心注解:@SpringBootApplication(启动入口,三合一注解)
  3. 核心机制:Starter 依赖简化 + 条件注解自动配置
  4. 核心优势:零XML、内置服务器、版本统一、开箱即用、快速开发
  5. 配置原则:默认配置可用,自定义配置优先