Spring Boot 自动配置是约定大于配置的核心体现,底层靠@EnableAutoConfiguration注解驱动。项目启动时,Spring Boot 会扫描 classpath 下META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports文件,加载所有自动配置类。再通过@Conditional系列条件注解,判断项目引入的依赖、环境、Bean 是否存在,比如引入 web 依赖就自动配置 Tomcat、Spring MVC。符合条件就自动创建 Bean、注入默认配置,无需手动写 XML 或配置类。如果需要自定义,只需要覆盖配置参数或手动创建 Bean,就能替换自动配置,实现开箱即用。
Starter 是 Spring Boot 的场景启动器,本质是一组依赖的封装包。比如spring-boot-starter-web,自动集成了 Spring MVC、Tomcat、JSON 解析等所有 Web 开发需要的依赖,不用手动逐个引入、管理版本冲突。每个 Starter 对应一个开发场景,Web、数据访问、消息队列等都有专属 Starter。它不仅整合依赖,还配合自动配置,引入 Starter 后框架自动完成配置,开发者直接写业务代码即可。Starter 彻底解决了传统 Spring 项目依赖繁琐、版本不兼容、配置复杂的问题,大幅提升开发效率。
Spring Boot 推荐全局统一异常处理,核心用@RestControllerAdvice+@ExceptionHandler组合。创建一个全局异常类,标注@RestControllerAdvice,针对不同异常编写处理方法,用@ExceptionHandler指定捕获的异常类型。方法内封装统一的错误响应格式,返回给前端。Spring Boot 还默认提供了错误页面和 JSON 异常响应,支持自定义异常类、全局数据校验异常处理。这种方式把分散的异常逻辑集中管理,不用在每个 Controller 写 try-catch,返回格式统一,排查问题更方便,是企业级项目的标准用法。
Spring Boot 事务管理开箱即用,核心用声明式事务,无需手动配置事务管理器。只需要在启动类加@EnableTransactionManagement(高版本可省略),在 Service 层方法或类上添加@Transactional注解,框架就自动管理事务。方法执行前开启事务,无异常提交,出现运行时异常自动回滚。支持配置事务传播行为、隔离级别、只读、回滚异常等参数。底层自动适配数据源,创建DataSourceTransactionManager,整合 AOP 实现动态代理。编程式事务仅用于特殊场景,日常开发用注解式事务即可,简单高效。
JPA 是Java 持久层规范,是一套接口和注解,没有具体实现,定义了 CRUD、映射规则标准。Hibernate 是JPA 的实现框架,完全遵循 JPA 规范,是底层的持久化引擎。Spring Data JPA 是对 JPA 的再封装,底层默认用 Hibernate 作为实现。简单说,JPA 是标准,Hibernate 是执行者,Spring Data JPA 是简化工具。在 Spring Boot 中,引入spring-boot-starter-data-jpa即可,开发者写 Repository 接口继承 JpaRepository,不用写 SQL,框架自动生成实现。我们面向 JPA 编程,底层由 Hibernate 执行,切换持久化实现也无需修改业务代码。
Spring Boot 多数据源配置核心是手动创建多个数据源、事务管理器和 SqlSessionFactory。首先在配置文件中配置两个及以上的数据库连接信息。然后创建配置类,通过@ConfigurationProperties绑定不同数据源配置,手动创建DataSource、JdbcTemplate/EntityManager、事务管理器 Bean。通过@Primary指定主数据源,给不同数据源配置包扫描路径,区分不同 DAO 层使用的数据源。也可以用 MyBatis-Plus、Druid 等工具简化配置。配置完成后,不同业务模块可切换操作不同数据库,适合分库分表、多库业务场景。
Spring Boot 缓存开箱即用,支持内存缓存、Redis、Ehcache 等多种实现。引入对应的缓存 Starter,在启动类加@EnableCaching开启缓存。通过@Cacheable标注查询方法,结果自动缓存;@CacheEvict删除缓存;@CachePut更新缓存。配置文件中可指定缓存类型、过期时间、缓存名称。默认用内存缓存,生产环境推荐搭配 Redis,只需配置 Redis 连接信息,框架自动整合。缓存注解无侵入业务代码,大幅降低数据库查询压力,适合查询多、修改少的业务场景,配置简单、使用便捷。
Spring Boot AOP 底层基于动态代理,默认用 CGLIB 代理,整合了 Spring AOP 所有功能。引入spring-boot-starter-aop依赖后,自动配置 AOP 相关 Bean。创建切面类加@Aspect,定义切点匹配目标方法,通过前置、后置、环绕等通知,在不修改业务代码的前提下增强功能。AOP 核心是抽离通用非业务逻辑,常见场景有日志记录、事务管理、权限校验、性能监控、参数校验等。它实现了业务代码与通用逻辑解耦,代码更简洁,扩展更方便,是 Spring Boot 中最常用的切面功能。
Spring Boot 用于开发单个微服务,配合 Spring Cloud 实现完整微服务架构。每个微服务都是独立的 Spring Boot 项目,通过 Spring Cloud 实现服务注册发现、配置中心、网关、熔断降级、远程调用。微服务把系统拆分为独立模块,可独立部署、扩容、升级,容错性强,适合大型项目。单体应用是一个项目打包部署,所有功能耦合在一起,开发部署简单,但扩容、维护、迭代困难。简单说,Spring Boot 造单个服务,Spring Cloud 管服务集群,微服务适合大型分布式系统,单体适合小型快速项目。
Spring Boot 安全控制用Spring Security框架,引入对应的 Starter 即可自动配置。核心实现认证和授权,认证是验证用户身份,授权是判断用户权限。通过配置类定义登录规则、权限规则,自定义UserDetailsService查询用户信息,支持表单登录、JWT、OAuth2 等方式。用@PreAuthorize注解控制接口权限,过滤器链完成请求拦截校验。框架默认提供基础安全配置,可自定义密码加密、登录页面、无权限处理。零代码实现基础安全,高度自定义适配企业级安全需求,保护接口和数据安全。
Spring Boot 集成 RabbitMQ 非常简单,引入spring-boot-starter-amqp依赖,配置文件填写 RabbitMQ 的地址、端口、账号密码。启动类自动配置连接工厂、RabbitTemplate。通过@Queue、@Exchange注解创建队列和交换机,绑定路由规则。生产者用RabbitTemplate.convertAndSend发送消息;消费者类加@RabbitListener监听队列,自动接收消息。框架封装了消息的发送、接收、确认机制,支持可靠消息、死信队列。无需手动处理连接、通道,开箱即用,适合异步通信、流量削峰、解耦业务场景。
Spring Boot 实现 RESTful API 极简,引入 web Starter,用@RestController标注控制器类(组合了@Controller和@ResponseBody)。通过@GetMapping、@PostMapping等注解定义请求方式和路径,用@PathVariable获取路径参数,@RequestBody接收 JSON 参数,方法返回对象自动转为 JSON 响应。遵循 REST 风格,用 HTTP 方法表示操作(GET 查、POST 增、PUT 改、DELETE 删),路径代表资源。框架自动配置消息转换器、异常处理,无需额外配置,快速开发标准化接口,适配前后端分离项目。
Spring Boot 数据访问支持JPA、MyBatis、JdbcTemplate多种方式。引入对应数据访问 Starter,配置文件填写数据库连接信息,框架自动配置数据源、事务管理器。用 JPA 只需写 Repository 接口,自动生成 CRUD;用 MyBatis 配置 mapper 路径,写 SQL 或注解;JdbcTemplate 适合简单 SQL 操作。框架统一封装数据库连接、资源释放、异常处理,屏蔽底层差异。支持 MySQL、PostgreSQL 等所有主流数据库,配置简单,切换数据访问框架无需修改业务逻辑,满足不同项目的数据访问需求。
Spring Boot 集成 WebSocket 引入spring-boot-starter-websocket依赖,创建配置类加@EnableWebSocket开启功能。定义 WebSocket 处理器,继承TextWebSocketHandler,处理连接、消息、断开事件。配置处理器映射路径,前端用原生 WebSocket API 连接后端。支持点对点通信、广播推送,适合聊天、消息通知、实时数据展示场景。框架自动配置 WebSocket 容器,无需手动处理底层连接、心跳,代码简洁。相比轮询,WebSocket 长连接性能更高,实时性更强,是服务端主动推送消息的最佳方案。
Spring Boot 集成 ES 有两种方式,推荐spring-boot-starter-data-elasticsearch。配置文件填写 ES 地址、端口,创建实体类加@Document注解映射索引。编写 Repository 接口继承ElasticsearchRepository,自动实现 CRUD、分页、高亮查询。也可用ElasticsearchTemplate自定义复杂查询。框架自动配置客户端、索引管理,封装了底层 API,不用手写复杂的 DSL 语句。支持集群、分词、高亮、聚合查询,适合全文检索、日志分析、大数据查询场景,整合简单,功能强大。
Spring Boot 文件上传自动配置,无需额外依赖,基于 Servlet3.0 原生上传。前端表单设置enctype="multipart/form-data",后端 Controller 用MultipartFile接收文件。配置文件可设置文件大小、单次请求大小限制。通过transferTo方法将文件保存到服务器本地或 OSS,获取文件名、文件类型、大小等信息。支持单文件、多文件上传,框架自动处理文件流、临时文件,无需手动操作 IO。可搭配 AOP 做文件格式校验,简单高效,满足日常图片、文档、视频上传需求。
JMS 是 Java 消息服务规范,Spring Boot 整合 ActiveMQ、RabbitMQ 等 JMS 实现。引入对应的 JMS Starter,配置文件填写消息中间件连接信息。启动类加@EnableJms开启功能。生产者用JmsTemplate发送消息;消费者用@JmsListener监听队列,自动接收消息。框架自动配置连接工厂、事务,支持点对点、发布订阅模式。JMS 屏蔽了底层消息中间件差异,切换 MQ 产品无需修改业务代码。适合系统解耦、异步任务、流量削峰,配置简单,兼容传统 Java 消息项目。
Spring Boot 定时任务开箱即用,启动类加@EnableScheduling开启功能。在 Bean 的方法上添加@Scheduled注解,通过 cron 表达式、固定延迟、固定频率设置执行规则。cron 表达式可精准指定秒、分、时、日、月、周,灵活控制执行时间。适合定时统计、定时清理、定时同步数据等场景。简单定时任务用注解即可,复杂分布式定时任务可整合 Quartz 或 XXL-Job。无需第三方依赖,纯注解实现,代码极简,满足单机定时任务所有基础需求。
Spring Boot 异步处理用来提升接口响应速度,启动类加@EnableAsync开启功能。在 Service 或 Controller 方法上添加@Async注解,该方法会被放到独立线程执行,主线程无需等待,直接返回响应。适合发送短信、邮件、日志记录、批量处理等耗时操作。可自定义线程池,配置核心线程数、最大线程数,避免线程溢出。异步方法支持返回值,用Future接收结果。框架自动管理线程池,无侵入业务代码,大幅提高系统吞吐量和用户体验。
Spring Boot 集成 OAuth2 用spring-boot-starter-oauth2-client和security依赖,实现第三方登录(微信、GitHub)或自建授权服务。配置文件填写第三方客户端 ID、密钥、授权地址。框架自动配置授权流程,用户点击登录跳转到第三方授权页面,授权后获取授权码,换取令牌,再获取用户信息。可自定义用户信息处理、登录成功 / 失败跳转。支持授权码、客户端、密码等多种模式,零代码实现第三方登录,也可搭建自己的 OAuth2 授权服务,安全可靠,适配企业级单点登录。
Spring Boot 解决跨域有三种简单方式,最常用全局配置。实现WebMvcConfigurer接口,重写addCorsMappings方法,设置允许的域名、请求方式、请求头、是否允许携带 Cookie。也可在 Controller 或方法上加@CrossOrigin注解,实现局部跨域。还可通过网关、过滤器处理跨域。配置后,浏览器跨域请求会被允许,解决前后端分离、前端域名与后端域名不一致的问题。配置简单,无需修改业务代码,适配所有 Web 项目的跨域需求。
Spring Boot 数据校验基于JSR380 规范,引入 web Starter 自动集成 Hibernate Validator。在实体类属性上加校验注解:@NotBlank非空、@Email邮箱、@Min最小值等。Controller 方法参数前加@Valid开启校验,用BindingResult接收错误信息。也可直接在 Controller 参数上加注解校验。校验不通过会返回默认错误信息,可自定义提示文案、分组校验、全局异常处理统一返回。无需手动写参数判断逻辑,统一管理校验规则,保证接口参数合法性。
JPA 性能优化核心是减少 SQL 查询、避免懒加载异常。开启 JPA SQL 日志,查看执行语句;用fetch join解决 N+1 查询问题;合理使用懒加载fetch = FetchType.LAZY,避免立即加载。配置 JPA 二级缓存、查询缓存,搭配 Redis 缓存热点数据。使用分页查询Pageable,避免全表查询;复杂 SQL 不用方法名查询,改用@Query自定义 SQL。合理设计实体关联关系,避免多表嵌套。通过这些优化,大幅减少数据库查询次数,提升接口响应速度,适配大数据量查询场景。
Spring Boot 默认用Logback作为日志框架,自动配置,无需手动集成。只需在配置文件设置日志级别、输出格式、日志文件路径。日志级别分 TRACE、DEBUG、INFO、WARN、ERROR,按需开启。用@Slf4j注解直接使用log对象打印日志,无需创建 Logger 对象。支持控制台输出、文件输出、按天分割日志、归档压缩。可自定义日志配置文件logback-spring.xml,适配不同环境日志规则。日志框架自动管理,零配置使用,方便排查问题、记录系统运行状态。
Profile 是 Spring Boot多环境配置解决方案,用来区分开发、测试、生产环境。创建多个配置文件:application-dev.yml、application-test.yml、application-prod.yml,分别对应不同环境的端口、数据库、日志配置。主配置文件用spring.profiles.active=dev指定激活的环境。启动时也可通过命令行参数指定环境。不同环境的配置隔离,切换环境无需修改代码和业务配置,避免配置混乱。支持多环境叠加、分组激活,是企业项目部署、测试的必备功能。
Spring Boot 集成 GraphQL 引入spring-boot-starter-graphql依赖,创建.graphqls schema 文件,定义查询类型、字段、数据结构。编写数据获取器RuntimeWiring,绑定查询方法。通过@Controller和@QueryMapping、@MutationMapping处理请求。前端只需发送需要的字段,后端按需返回数据,避免接口返回冗余字段。框架自动配置 GraphQL 引擎、控制台,支持查询、修改、订阅。适合前后端数据需求多变的场景,减少接口数量,提升数据传输效率。
Actuator 是 Spring Boot官方监控运维组件,引入对应的 Starter 即可使用。它提供一系列监控接口,查看应用运行状态:健康检查、Bean 信息、配置信息、请求映射、线程状态、日志、 metrics 指标等。支持 HTTP 和 JMX 两种访问方式,可配置接口权限、开启 / 关闭指定端点。方便运维人员监控服务是否正常、快速排查问题,也可对接 Prometheus、Grafana 搭建可视化监控平台。是 Spring Boot 项目生产环境必备的运维工具,让服务可监控、可管理。
Spring Boot 配置文件支持application.properties和application.yml,yml 格式更简洁。配置支持层级结构、多环境切换、占位符引用、外部配置。优先级:命令行参数 > 外部配置文件 > 内部配置文件 > 默认配置。可通过@Value注解读取单个配置,@ConfigurationProperties绑定实体类批量读取。支持配置加密、动态刷新(结合 Cloud Config)。配置集中管理,语法简洁,支持多种加载方式,灵活适配开发、测试、生产不同环境的配置需求,简化配置维护工作。
Spring Boot 国际化自动配置,在resources下创建i18n目录,编写不同语言的配置文件:messages_zh_CN.properties、messages_en_US.properties,存放对应语言文案。配置文件指定基础名和语言解析器,默认从请求头获取语言环境。通过MessageSource获取对应语言文案,前端用模板引擎展示。支持 Session、Cookie、请求参数切换语言。无需修改业务代码,快速适配中英文等多语言场景,适合海外项目、多语言平台使用,配置简单易用。