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