文章

Spring Boot 学习笔记:自动装配与常用组件

沈行知

暂存笔记,持续补充中。面向 Java 后端方向的 Spring Boot 知识体系。

一、核心机制:自动装配

  • 启动类 @SpringBootApplication 组合了 @SpringBootConfiguration + @EnableAutoConfiguration + @ComponentScan
  • 自动装配@EnableAutoConfiguration 通过 spring.factories / AutoConfiguration.imports 加载 XxxAutoConfiguration,配合 @ConditionalOnXxx 按条件生效。
  • 原理一句话:按需装配 Bean,约定优于配置。

二、starter 机制

spring-boot-starter-xxx 是把一组相关依赖「打包」的坐标,减少版本冲突(统一由 BOM 管理)。常见:web、data-redis、data-jpa、mybatis(第三方)。

三、配置文件

  • application.yml / application.properties,支持 profile 隔离:application-dev.ymlapplication-prod.yml
  • 优先级:命令行参数 > 环境变量 > 配置文件 > 默认值。
  • 自定义配置用 @ConfigurationProperties + @Component,或 @Value
server:
  port: 8080
spring:
  datasource:
    url: jdbc:mysql://localhost:3306/blog
    username: root
    password: "123456"

四、常用注解

注解 作用
@RestController @Controller + @ResponseBody,返回 JSON
@RequestMapping / @GetMapping / @PostMapping 路由映射
@RequestBody / @PathVariable / @RequestParam 参数绑定
@Service / @Repository / @Component 组件注册
@Autowired / @Resource 依赖注入
@Transactional 声明式事务
@Slf4j Lombok 日志

五、常用整合

  • 数据源spring-boot-starter-jdbc + HikariCP(默认连接池)。
  • Redisspring-boot-starter-data-redis,注入 StringRedisTemplate
  • 校验spring-boot-starter-validation@Valid + @NotNull 等。
  • 单元测试spring-boot-starter-test + @SpringBootTest

六、常见坑

  1. 循环依赖 → 用构造器注入或 @Lazy,或重构。
  2. 配置不生效 → 检查 profile、包扫描路径、@Component 是否被扫描到。
  3. @Transactional 失效 → 同类内部调用不走代理、异常被捕获吞掉、非 public 方法。

本文为暂存笔记,后续补充完整示例项目。