spring boot的starter是一组预配置的依赖集合,通过自动配置和约定优于配置机制,实现开箱即用、按需加载bean、支持默认配置覆盖;例如spring-boot-starter-web自动集成tomcat、spring mvc与jackson。

Spring Boot 的起步依赖(Starter)本质是一组预配置的依赖集合,它通过自动装配(Auto-configuration)和约定优于配置(Convention over Configuration)大幅减少手动配置工作。你不需要自己挑版本、写冗长的 pom.xml 依赖项,只需引入对应 Starter,Spring Boot 就能按需加载 Bean、配置默认行为,并允许你轻松覆盖。
选对 Starter:按功能场景引入
Spring Boot 官方提供了大量命名规范的 Starter,格式通常是 spring-boot-starter-xxx。例如:
-
web 开发 → 引入
spring-boot-starter-web(内置 Tomcat + Spring MVC + Jackson) -
JPA 持久层 → 引入
spring-boot-starter-data-jpa(含 Hibernate、连接池、事务管理) -
Redis 缓存 → 引入
spring-boot-starter-data-redis(自动配置 RedisTemplate 和 Lettuce 客户端) -
安全控制 → 引入
spring-boot-starter-security(默认启用 Basic Auth,可快速定制)
所有 Starter 都托管在 Maven Central,无需额外配置仓库。IDE 通常支持自动补全,输入 “starter” 即可筛选。
用法很简单:只加依赖,不写配置(基础场景)
以 Web 项目为例,在 pom.xml 中添加:
<dependency><groupid>org.springframework.boot</groupid><artifactid>spring-boot-starter-web</artifactid></dependency>
然后写一个主类和 Controller:
@SpringBootApplication
public class MyApp {
public static void main(String[] args) {
SpringApplication.run(MyApp.class, args);
}
}
@RestController
class HelloController {
@GetMapping("/hello")
String hello() {
return "Hi!";
}
}
启动后就能直接访问 http://localhost:8080/hello —— 内嵌 Tomcat、MVC 路由、JSON 序列化全部开箱即用,无需 XML 或 @EnableWebMvc 等显式开启。
自定义配置:覆盖默认值,不破坏 Starter 机制
Starter 提供的默认行为可通过 application.properties 或 application.yml 调整,比如:
- 改端口:
server.port=9090 - 配数据库:
spring.datasource.url=jdbc:mysql://localhost:3306/mydb - 开 SQL 日志:
spring.jpa.show-sql=true
这些属性名由 Starter 内部的 @ConfigurationProperties 类绑定,IDE 通常支持提示和校验。若需更深度定制(如替换数据源类型),可声明自己的 @Bean,Spring Boot 的条件化配置(@ConditionalOnMissingBean)会自动跳过默认 Bean。
进阶:理解 Starter 背后发生了什么
每个 Starter 实际包含两部分:
- 一个
spring-boot-starter-xxx的空 jar(仅声明依赖) - 一个
spring-boot-autoconfigure模块中的自动配置类(如JpaRepositoriesAutoConfiguration),它通过META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports(Spring Boot 3.2+)或旧版spring.factories注册到启动流程中
自动配置类内部使用 @Conditional 系列注解判断环境(如是否存在某个类、是否缺少某个 Bean),再决定是否生效。这意味着 Starter 不是“一刀切”,而是智能适配你的项目实际依赖。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











