在 IntelliJ IDEA 中创建基于 Maven 的 Spring Boot 项目,是多数 Java 开发者接触微服务开发的第一步。项目初始化并不复杂,但想做到目录结构清晰、依赖可控、启动迅速,仅靠默认生成还远远不够。本文会从环境准备开始,逐步说明项目创建、核心配置、多环境切换和启动优化等环节,并对常见问题给出排查思路。

一、环境准备与版本匹配
IDEA 创建 Spring Boot 项目前,需要先确认 JDK、Maven 和 IDEA 的版本关系。Spring Boot 2.x 通常要求 JDK 8 及以上,Spring Boot 3.x 则要求 JDK 17 及以上。IDEA 2021.3 之后的版本对 Spring Boot 3 支持较好,如果使用较老的 IDEA,可能无法识别新的 Spring Initializr 模板。建议在命令行执行 java -version 和 mvn -v,确认本机 JDK 与 Maven 均可用。
Maven 的版本不宜过旧,建议使用 3.6.3 或更高版本。Windows 用户需特别注意 Maven 本地仓库路径,默认在 C:\Users\你的用户名\.m2\repository。如果 C 盘空间紧张,可以在 Maven 安装目录的 conf\settings.xml 中修改 localRepository 路径。IDEA 中还需在 Settings 的 Build Tools 下关联 Maven 安装目录、settings.xml 和本地仓库,避免依赖下载到错误位置。
<settings>
<localRepository>D:\dev\maven-repo</localRepository>
<mirrors>
<mirror>
<id>aliyunmaven</id>
<mirrorOf>central</mirrorOf>
<name>Aliyun Maven Mirror</name>
<url>https://maven.aliyun.com/repository/central</url>
</mirror>
</mirrors>
</settings>
上面这段配置展示了将本地仓库切换到 D 盘并启用阿里云镜像的写法。需要注意的是,settings.xml 中的 XML 标签在 IDEA 中不会被当作页面标签处理,但阅读时要注意路径必须真实存在,否则 Maven 下载依赖时会报错。镜像配置可以显著提升国内网络环境下依赖下载速度,后续创建项目时如果卡在 downloading maven dependencies,可以优先检查这里。
二、创建项目的详细步骤
打开 IDEA 后选择 New Project,在左侧选择 Spring Initializr。Project SDK 选择已安装的 JDK,Server URL 保持默认的 start.spring.io。如果网络不稳定,可以替换为阿里云提供的 start.aliyun.com。接下来填写项目元数据,Group 一般使用公司域名倒序,例如 com.example,Artifact 填写项目名,Type 选择 Maven,Language 选择 Java,Packaging 选择 Jar,Java 版本按目标环境选择。
在依赖选择界面,基础 Web 项目至少勾选 Spring Web。如果使用数据库,可勾选 MyBatis Framework 或 Spring Data JPA,并加入对应的数据库驱动。依赖数量不必一次加满,后续在 pom.xml 中手动补充反而更灵活。点击 Finish 后,IDEA 会自动生成项目骨架,包括主启动类、application.properties 和测试类。生成结束后先等待 Maven 导入完成,再执行 mvn spring-boot:run 或直接运行主类验证。
生成后的 pom.xml 中会包含 <parent> 标签,用于继承 Spring Boot 的版本管理。下面是一个最小化的 pom.xml 示例,注意其中 <dependencies> 只保留了 web 启动器:
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>3.2.5</version>
<relativePath/>
</parent>
<groupId>com.example</groupId>
<artifactId>demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>demo</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>17</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
如果后续想增加依赖,可以在 pom.xml 中手动添加,也可以在模块上右键选择 Generate 并搜索依赖。手动编辑时要注意依赖的 scope 和版本,大部分 Spring Boot 启动器无需写版本号,由 <parent> 统一管理。如果遇到依赖冲突,优先使用 IDEA 的 Maven 面板查看依赖树。
三、配置文件管理与多环境实践
Spring Boot 的配置可以写在 application.properties 或 application.yml 中。实际项目推荐使用 YAML 格式,层级关系更清晰。常见配置包括服务端口、上下文路径、Jackson 序列化、数据源和日志级别。例如将端口改为 8081,并设置统一接口前缀 /api,只需在 application.yml 中写 server.port 和 server.servlet.context-path。这些配置对应的是 Spring Boot 自动装配中的 ServerProperties 与 WebMvcProperties。
多环境切换是项目规范化的关键。可以创建 application-dev.yml、application-test.yml 和 application-prod.yml,在主配置中通过 spring.profiles.active 指定当前环境。开发环境使用本地数据库,生产环境从环境变量中读取敏感信息,避免把密码提交到 Git 仓库。下面是一个多环境配置示例:
spring:
profiles:
active: dev
datasource:
url: jdbc:mysql://localhost:3306/demo?useUnicode=true&characterEncoding=utf8
username: root
password: 123456
server:
port: 8081
servlet:
context-path: /api
上面示例中数据库连接串里的 & 在 YAML 中建议写成转义形式或直接使用 useUnicode=true&characterEncoding=utf8,但为了可读性也可以保留符号,解析时不会出现大问题。若切换环境,只需把 spring.profiles.active 改为 test 或 prod,并在对应文件中维护差异化配置。命令行启动时还可以通过 --spring.profiles.active=prod 覆盖文件配置。
配置文件的值可以直接通过 @Value 注入到字段,但配置项较多时更推荐使用 @ConfigurationProperties 绑定到 JavaBean。例如定义一个 AppProperties 类,统一管理文件上传路径、令牌过期时间等参数,既便于类型安全,也能在 IDE 中获得提示。绑定需要添加 spring-boot-configuration-processor 依赖,并在启动类或配置类上标注 @EnableConfigurationProperties。
四、启动优化、依赖管理与常见问题排查
Spring Boot 项目启动慢,很多时候不是框架本身的问题,而是自动配置范围过大或开发工具阻塞。可以通过启动类上的 @SpringBootApplication 注解属性排除不必要的自动配置,例如 exclude = DataSourceAutoConfiguration.class。对于纯 Web 服务,如果不需要数据源,排除后启动速度会有明显改善。另一个常见优化是使用 spring-boot-devtools 实现热部署,但要注意它只适合开发环境,生产环境应移除该依赖。
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
@SpringBootApplication(exclude = DataSourceAutoConfiguration.class)
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
依赖管理方面,推荐定期执行 mvn dependency:tree 查看完整依赖树,找出冲突的传递依赖。IDEA 的 Maven 面板中可以在 Dependencies 中直接搜索冲突项,右键选择 Exclude 就能在 pom.xml 中生成排除代码。针对打包体积,可以在 spring-boot-maven-plugin 中配置 <excludes>,排除测试代码或本地配置文件,避免将开发环境变量打入生产包。下面是一个插件配置示例:
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<excludes>
<exclude>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</exclude>
</excludes>
</configuration>
</plugin>
排除 Lombok 可以减小最终 Jar 包体积,因为 Lombok 只在编译期生效,运行时并不需要。除了打包瘦身,启动参数也可以调整。对于内存较小的服务器,可以设置 -Xms256m -Xmx512m,通过 IDE 的运行配置或 Jar 启动命令传入。使用 java -jar demo.jar --server.port=9090 还能在启动时覆盖端口号,适合临时调试。
实际开发中常见的问题主要有端口占用、Maven 依赖下载失败和 JDK 版本不一致。端口占用可通过 netstat -ano | findstr 8080 查找进程并结束,也可以直接修改端口规避冲突。依赖下载失败多与网络或镜像有关,优先检查 settings.xml 中的镜像地址,并删除 .m2 目录下损坏的 lastUpdated 文件后重新导入。JDK 版本不一致会导致类文件版本错误,此时应检查 Project Structure 中的 SDK 与 pom.xml 中 <java.version> 是否匹配,并重新导入 Maven 项目。
IDEA创建SpringBootMaven项目配置优化修改时间:2026-10-02 10:26:48