从Grails转Spring Boot:搭建ORM+Web+领域对象应用需哪些依赖?
你的认知确实存在偏差——Spring Boot 并非自带所有开发所需组件,它的核心是通过「Starter 依赖」简化组件集成与配置,基础的 Spring Boot 核心包仅提供最底层的启动、自动配置框架,像 JDBC、JPA、Web 服务这类功能都需要通过引入对应 Starter 来获取。
一、Spring Boot 核心自带的组件
基础的 spring-boot-starter(或 spring-boot 核心包)默认包含以下内容:
- Spring Core 核心功能:IoC 容器、依赖注入、Bean 生命周期管理
- Spring Boot 自动配置框架:处理配置文件加载、条件化配置逻辑、环境变量解析
- 基础工具集:SLF4J+Logback 日志框架、配置文件(
application.properties/yaml)解析、异常处理基础组件
这些是所有 Spring Boot 应用的基础,但不足以支撑你的业务开发需求。
二、满足你需求的必需依赖
针对你需要「自动建表/关系映射、无手写 SQL 查询、Web 服务」的需求,只需引入以下 3 类依赖即可快速编码:
1. Web 服务依赖
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency>
这个 Starter 会自动集成 Spring MVC、Tomcat 嵌入式容器、Jackson JSON 解析器,对应 Grails 中的 Web 层功能,你可以直接编写控制器(Controller)对外提供接口。
2. JPA/ORM 依赖
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency>
这是核心依赖,它已经打包了:
- Hibernate(JPA 的默认实现):负责领域对象到数据库表的映射、自动建表/索引、关系维护(只需在配置文件中设置
spring.jpa.hibernate.ddl-auto=update或create即可开启自动建表) - Spring Data JPA:提供 Repository 接口,只需定义继承
JpaRepository的接口,就能实现 CRUD、分页、条件查询等功能,完全无需手写 SQL - Spring JDBC 核心:处理数据库连接、事务管理等底层逻辑
3. 数据库驱动
根据你使用的数据库选择对应的驱动,比如 MySQL:
<dependency> <groupId>com.mysql</groupId> <artifactId>mysql-connector-j</artifactId> <scope>runtime</scope> </dependency>
PostgreSQL 则替换为 postgresql 依赖,Spring Boot 不会默认自带具体数据库驱动,需要手动引入。
三、和 Grails 的差异
Grails 是高度「约定式」的全栈框架,默认帮你集成了 Web、ORM、数据源等所有必备组件;而 Spring Boot 更偏向「灵活选型」,通过 Starter 让你按需引入组件,避免冗余依赖,但核心依赖加起来仅 3 个左右,同样能实现像 Grails 那样的快速编码体验——只需编写领域对象、Repository、Controller,框架会自动完成配置与初始化。
内容的提问来源于stack exchange,提问作者John Little

