当前位置: 首页 > news >正文

SpringBoot应用开发指南:从入门到高级配置与自动装配原理

SpringBoot

springboot是spring家族的脚手架/整合框架

一、怎么集成的

springboot本质是一个容器+自动配置中心,把spring家族的常见组合都“预配好了”,用starter包来集成

Spring MVC(Web 层)

  • 依赖:spring-boot-starter-web
  • 自动配置内容:
    • 注册 DispatcherServletHandlerMappingHandlerAdapter
    • 内置 JSON 序列化(默认 Jackson)
    • 静态资源映射(/static, /public, /resources
    • 内置异常处理机制 @ControllerAdvice

Spring Data JPA / JDBC(数据访问层)

  • 依赖:spring-boot-starter-data-jpa / spring-boot-starter-jdbc
  • 自动配置内容:
    • 自动创建 DataSource
    • 扫描 @Repository
    • 提供 EntityManagerJdbcTemplate
    • 根据 application.yml 配置数据库连接和方言

Spring Security(权限认证)

  • 依赖:spring-boot-starter-security
  • 自动配置内容:
    • 默认所有请求需要认证
    • 自动注册 UserDetailsService(默认内存用户)
    • 自动配置 CSRF、防火墙过滤器链

Spring AOP

  • 依赖:spring-boot-starter-aop
  • 自动配置 @EnableAspectJAutoProxy
  • 自动支持 @Aspect 切面

Spring Cache

  • 依赖:spring-boot-starter-cache
  • 自动启用 @EnableCaching
  • 支持 Redis、EhCache 等 CacheManager

Spring Mail、Spring Batch、Spring AMQP、Spring Kafka

  • 都有对应 starter,比如:
    • spring-boot-starter-mail → JavaMailSender
    • spring-boot-starter-amqp → RabbitMQ
    • spring-boot-starter-kafka → KafkaTemplate

二、相比ssm的优势

1. 配置量差异

  • SSM:
    • 需要写一堆 XML(Spring 配置、MyBatis 映射、事务管理、Spring MVC DispatcherServlet)
    • 还要手动注册 Bean、Mapper 扫描器等
  • Spring Boot:
    • 配置文件只需 application.yml
    • MyBatis 直接用 spring-boot-starter-mybatis,无需额外 XML(Mapper 接口 + 注解/简化 XML 即可)

2. 启动和部署

  • SSM: 必须依赖外部 Tomcat/Jetty,打 war 包,放到容器里跑。
  • Spring Boot: 内嵌 Tomcat(或 Jetty/Undertow),直接 java -jar 运行。

3. 生态与扩展

  • SSM: 基本就是 CRUD,后续要引入消息队列、缓存、定时任务等,需要额外配置。
  • Spring Boot: starter 齐全,一行依赖即可集成 Kafka、Redis、Quartz、ElasticSearch。

4. 社区和标准化

  • Spring Boot 已经成为 Spring 官方推荐的标准,SSM 已逐渐淘汰(大公司新项目基本不再用 SSM)。

三、springboot自动配置核心原理

1. 核心注解

  • @SpringBootApplication = @SpringBootConfiguration + @EnableAutoConfiguration + @ComponentScan
  • @EnableAutoConfiguration → 读取 META-INF/spring.factories 中的配置类

2. 条件装配(@Conditional)

  • 例如:

    @Configuration
    @ConditionalOnClass(DataSource.class)
    public class DataSourceAutoConfiguration { ... }
    
  • 如果项目里有 DataSource 类,就自动创建数据库连接池 Bean。

3. 外部配置绑定

  • @ConfigurationPropertiesapplication.yml 的配置绑定到 Bean

  • 如:

    spring:datasource:url: jdbc:mysql://localhost:3306/testusername: rootpassword: 123456
    

    自动绑定到 DataSourceProperties

4. Starter + AutoConfiguration 配合

  • 你引入 spring-boot-starter-web → Boot 自动加载 WebMvcAutoConfiguration → 自动装配 SpringMVC。

四、自动开始了什么

1. 内嵌容器

  • 默认启动 Tomcat,扫描并注册 Servlet、Filter、Listener。

2. 常用 Bean 注册

  • MVC 组件、事务管理器、异常处理、消息转换器、数据源、缓存管理器。

3. 配置中心

  • 外部化配置,支持 yml、properties、环境变量。

4. 健康检查 & 监控(Actuator)

  • 一行依赖就能查看 /actuator/health/metrics

文章转载自:

http://msRHX3lQ.mpngp.cn
http://RC3oUm4k.mpngp.cn
http://MIjz04tZ.mpngp.cn
http://cRIFO8W9.mpngp.cn
http://TZe9z14X.mpngp.cn
http://Gn5ZP3UO.mpngp.cn
http://NTFszdWk.mpngp.cn
http://OPqZRKKZ.mpngp.cn
http://ItTkZu6n.mpngp.cn
http://dr5nP5jC.mpngp.cn
http://PZmpff3e.mpngp.cn
http://aPvJz1HM.mpngp.cn
http://lXPq6Lc7.mpngp.cn
http://WHJBUkyY.mpngp.cn
http://q7WvbmjO.mpngp.cn
http://XAX9OVzB.mpngp.cn
http://DZgzPIAu.mpngp.cn
http://A70DwYrU.mpngp.cn
http://4qUGXjRP.mpngp.cn
http://89grX02o.mpngp.cn
http://VomiFvAb.mpngp.cn
http://iClOg0LD.mpngp.cn
http://G58drNDN.mpngp.cn
http://A4V4yS9e.mpngp.cn
http://SeDBYsGU.mpngp.cn
http://8CL6AYux.mpngp.cn
http://fsdSop7R.mpngp.cn
http://RoaVnnS4.mpngp.cn
http://iF5G68bT.mpngp.cn
http://z80zOeg1.mpngp.cn
http://www.dtcms.com/a/380957.html

相关文章:

  • 怎么快速规划好旅行
  • 一带一路经济走廊及其途经城市图件
  • k8s的设计哲学
  • 城市污水管网流量监测方法
  • 计算机视觉进阶教学之特征检测
  • 基于OpenVinoSharp和PP-Vehicle的车辆检测
  • [论文阅读] 人工智能 | 软件工程 - 软件测试 | 从黑盒到透明:AUTOSTUB用进化算法打通符号执行的“最后一公里”
  • zmq源码分析之io_thread_t
  • 什么是财报自动识别?5分钟OCR识别录入1份财务报表
  • 《Html模板》HTML数学题目生成器 - 让数学练习更简单(附源码)
  • leetcode29( 有效的括号)
  • SpringBoot实现WebSocket服务端
  • AI赋能与敏捷融合:未来电源项目管理者的角色重塑与技能升级——从华为实战看高技术研发项目的管理变革
  • 从入门到了解C++系列-----C++11 新语法
  • 数据结构(C语言篇):(十二)实现顺序结构二叉树——堆
  • zmq源码分析之mailbox
  • AI智能体时代的可观测性
  • Transformer架构详解:革命性深度学习架构的原理与应用
  • PAT乙级_1114 全素日_Python_AC解法_含疑难点
  • 一、HTML 完全指南:从零开始构建网页
  • 【硬件-笔试面试题-87】硬件/电子工程师,笔试面试题(知识点:解决浪涌电压)
  • Spring的注解
  • Java Class Analyzer MCP Server:让AI精准理解Java依赖的利器
  • 创建自己的Docker镜像,使用工具:GitHub(远程仓库)、GitHub Desktop(版本控制工具)、VSCode(代码编辑器)
  • Windows11安装Docker Desktop
  • FastJson解析对象后验签失败问题分析
  • 【Vue2手录12】单文件组件SFC
  • Pinia
  • MySQL按时间Range分区
  • python发送请求SSL验证设置