news 2026/10/9 6:54:02

2023版IDEA创建SpringBoot项目:版本选择、环境配置与高频坑排查

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
2023版IDEA创建SpringBoot项目:版本选择、环境配置与高频坑排查

1. 先别急着点Next:2023版IDEA创建SpringBoot前的三个关键认知

最近在技术群里又看到不少人问"在2023版IDEA里怎么创建SpringBoot项目",很多新同学照着网上老教程点半天,要么找不到入口,要么生成后启动就报错。其实问题往往不是操作错,而是没搞懂2023年这个时间点上的几种环境差异。我先说三个必须提前知道的事,能避开大部分坑。

1.1 IDEA版本差异:Ultimate版和Community版的本质区别

IntelliJ IDEA主要分两个版本:Community(社区版,免费)和Ultimate(旗舰版,收费)。很多人用的是社区版,但在Spring Boot项目创建这件事上,两个版本是有本质区别的。

  • Ultimate版:内置Spring Initializr向导,你可以在新建项目时直接选Spring Boot,图形化填写依赖,一键生成项目骨架。这是网上绝大多数教程默认的情况。
  • Community版:默认没有Spring Boot项目创建入口,而且从IDEA 2021之后,JetBrains把Spring插件收归旗舰版专享,社区版即使手动装插件也装不上Spring Initializr。但这不代表社区版不能开发Spring Boot——你完全可以从网页生成项目,再用社区版以Maven项目方式导入,照样能写能跑。

所以第一步先确认一下自己装的是哪个版本。打开IDEA,菜单栏Help -> About,可以看到完整版本号,如果你的版本名称里带"Community",那后面创建项目的路径就要走网页方案,这个我在第4部分展开说。

1.2 Spring Boot版本选择:2023年该用哪个版本,为什么"版本太高"会坑你

2023年你打开start.spring.io,默认推荐的往往是Spring Boot 3.x的最新稳定版,比如3.1或3.2。很多新手图省事直接选默认,结果项目一创建,报错一堆。为什么?这里有个关键知识点:

  • Spring Boot 3.0起,底层要求JDK17及以上。如果你本机装的是JDK8或JDK11,选了3.x根本编译不过。
  • Spring Boot 3.x把许多包名从javax.*迁移到了jakarta.*,比如javax.servlet变成jakarta.servlet。这意味着市面上很多基于旧版写的教程、代码片段不能直接复制粘贴。
  • 一些第三方依赖(比如某些旧版数据库驱动、老的分页插件、旧版连接池)还没有适配Spring Boot 3.x,用起来会出现莫名其妙的兼容问题。

所以我的建议非常直接:如果是初学者,或者只是为了完成课设、公司常规业务项目,首选Spring Boot 2.7.x。2.7是2023年仍然长期维护的2代版本,JDK8就能跑,教程多、坑少、三方库兼容性最好。等你对Spring全家桶熟了,再切3.x不迟。

在IDEA新建项目的向导里,Spring Boot版本那栏是可以下拉选择的,别用默认值。

1.3 JDK与Maven:项目能不能跑起来的基础配置

创建Spring Boot项目之前,先确保本地环境有这四样:JDK、Maven、IDEA插件、网络。

JDK方面,如果你决定用Spring Boot 2.7,JDK8或JDK11都稳妥;如果用3.x,必须JDK17+。本机没有对应JDK的,可以在File -> Project Structure -> SDK -> Add JDK里添加指定的JDK安装目录,也可以指针自动下载。IDEA 2023支持到JDK21,所以不用愁没地方装。

Maven方面,IDEA是自带Maven的,不需要单独安装——但自带Maven用的中央仓库地址在国外,国内下载依赖时常卡死。哪怕你项目创建流程全走对,依赖拉不下来一样白搭。强烈建议提前配好Maven镜像,这个配置细节我会在第5部分专门讲,这里先提一句。

还有一个很多人忽略的点:创建项目时IDEA的Project SDK设置和Modules SDK设置要一致。我见过有人全局JDK是17,但项目Module里还是老的1.8,结果编译期报错。创建项目的时候,看清楚右上角的SDK下拉框再点Next。

把这三个认知搞清楚了,再开始创建项目,你后面至少少踩一半的坑。

2. 完整实操:在IDEA 2023中创建一个Spring Boot项目的全流程

这里以IDEA 2023.2以上版本、Ultimate版为例(社区版路径见第4部分)。我尽量把每个按钮的位置、每个参数的含义说清楚,你跟着点就可以了。

2.1 新建项目:从界面到项目骨架生成

打开IDEA后,主界面选New Project。如果你已经打开了一个项目,可以File -> New -> Project。此时会弹出一个向导窗口,关键是左侧项目类型这一栏:

  • 选择Spring Boot(不同版本IDEA可能写Spring Initializr或Spring Boot,本质一样)。
  • 右侧SDK选择你已经配好的JDK版本(用2.7就选1.8或11,用3.x就选17)。
  • Server URL这里默认是https://start.spring.io。如果网络不好,可以改成阿里云的https://start.aliyun.com,它能生成Spring Boot 2.x版本项目,速度更快,但对3.x的选择支持会滞后。这个问题不大,我们本来也推荐2.x。
  • 点Next进入参数填写页。

这一步最常见的失败就是Server URL连不上。如果卡在加载界面很久,要么网络断了,要么被墙了(注意我这里说的是网络问题,不是让你干什么,就是告诉你检查连通性)。可以换个网络环境,或者直接改用阿里云URL。

2.2 关键参数怎么填:Group、Artifact、项目名、包名的门道

进入参数填写页后有这几个字段:

字段含义填写建议
Group组织标识,一般写成公司域名的倒序比如com.example,课设可以写com.demo
Artifact项目标识,一般就是项目名比如blog-system,小写+中划线
Type构建工具选Maven(Gradle也可以,但Maven更大众)
Language语言Java
Name项目名称最好和Artifact一致,避免混淆
Package name包名通常自动生成,格式就是Group + Artifact的组合,比如com.example.blogsystem。注意Artifact里如果有中划线,包名里会自动去掉中划线
Project location项目存放位置选个路径好记的目录,别放桌面上临时文件夹

这里最容易被忽略的是Package name。包名是Java类的namespace,决定了Spring Boot扫描组件的基础包。后面写代码时所有Controller、Service都要放在这个包或其子包下,不然Spring扫不到。所以建议起一个有辨识度的包名,比如com.myblog.article。

2.3 依赖选型:Web、DevTools、数据库驱动等初学者的标准搭配

点Next之后是Dependencies(依赖)选择页,左边是分类,右边是已选列表。对于绝大多数初学者或者课设项目,我建议按下面这个最小集来选:

  • Spring Web:必选,提供Spring MVC和内置Tomcat,没有它Web项目起不来。
  • Spring Boot DevTools:强推,改代码后实现热重启,极大提升开发效率。不过注意,它只对开发环境友好,生产环境记得排除。
  • Lombok:简化实体类的getter/setter,可选但推荐,前提是IDEA里要装Lombok插件,还要开启Annotation Processing。
  • MySQL Driver:如果你要连数据库就选,配合JDBC或JPA使用。
  • Spring Data JPA(或MyBatis):如果要写数据访问层,按你项目习惯选。JPA是Spring官方标准化方案,MyBatis是国内主流。二选一即可,别都选。
  • Spring Boot Actuator:生产环境监控用,新手暂时可以不选,以后再加。

选定后点Next,然后Finish,IDEA就开始从远程下载项目模板并生成骨架。第一次创建可能很慢,因为要拉取很多依赖,耐心等,同时顺便把第5部分的Maven镜像先配好。

2.4 首次启动:验证项目真的能跑起来

项目生成后,找到src/main/java包下带有@SpringBootApplication注解的类,文件名一般是项目名Application.java。右键这个类,选Run 'xxxApplication'。

启动时观察控制台日志,看到类似这样的输出就说明成了:

Tomcat started on port(s): 8080 (http) with context path '' Started DemoApplication in 2.124 seconds (process running for 2.134)

然后浏览器访问http://localhost:8080,如果页面显示Whitelabel Error Page,不要慌——这恰恰证明应用已经正常启动,只是还没有写Controller。你可以新建一个TestController:

package com.example.demo; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; @RestController public class TestController { @GetMapping("/hello") public String hello() { return "Hello Spring Boot!"; } }

刷新页面访问http://localhost:8080/hello,看到Hello Spring Boot!说明你的Spring Boot项目已经彻底跑通了。

3. 项目生成之后:Spring Boot项目结构拆解与运行原理

很多新手项目创建完,看着一堆目录和文件发懵,然后就开始随便乱放类,结果启动报错。我先带你把这套结构看明白,你就知道哪些文件能动、哪些不能乱动。

3.1 核心目录结构与关键文件

一个标准的Spring Boot Maven项目,生成后目录大概是这样:

demo ├── src │ ├── main │ │ ├── java/com/example/demo │ │ │ ├── DemoApplication.java │ │ │ └── (your packages) │ │ └── resources │ │ ├── static # 静态资源(css、js、图片) │ │ ├── templates # 模版文件(Thymeleaf等) │ │ └── application.properties │ └── test/java/com/example/demo │ └── DemoApplicationTests.java ├── target # 编译输出目录,自动生成 ├── pom.xml # Maven配置文件,项目依赖核心 └── .mvn / mvnw # Maven Wrapper,保证构建环境一致

重点说两个:

  • pom.xml:所有依赖都在这里管理。你以后加任何第三方库(比如Redis、EasyExcel),都往<dependencies>里加坐标。IDEA在pom.xml里支持自动补全,输入开头字母就能提示。
  • application.properties:配置文件的默认位置。端口、数据库连接、日志级别、各种自定义参数都写在这里。位置固定,就别乱挪。

还有.gitignore,如果你准备用Git管理项目,这个文件别删,IDEA也默认生成好了。

3.2 启动类与自动配置的简单理解

那个带有@SpringBootApplication的类是项目的入口。注解本身是三个注解的组合:@SpringBootConfiguration、@EnableAutoConfiguration、@ComponentScan。你可以把它理解成一个打包好的开关:

  • @EnableAutoConfiguration负责"猜"你要什么配置。比如你pom里加了spring-boot-starter-web,它就自动帮你配置Tomcat和Spring MVC;加了数据库相关,它就自动配置数据源。
  • @ComponentScan负责扫描当前包及其子包下所有带@Component、@Service、@Repository、@Controller等注解的类。

所以千万记住:你的Controller、Service、Config这些类都要放在启动类所在包或它的子包里,放错位置,扫描不到,接口直接404。

3.3 配置文件application.properties还是application.yml

Spring Boot支持再种格式:application.properties和application.yml。两个都行,IDE默认生成的是properties,但个人更推荐用yml格式,因为支持层级结构,看着清爽,尤其配置类多的时候。

比如配置端口和上下文路径:

server: port: 8081 servlet: context-path: /api

等价于properties写法:

server.port=8081 server.servlet.context-path=/api

如果要切换到yml,直接右键resources目录,New -> File,命名为application.yml,然后删掉原有的properties即可。注意别两个文件同时存在,Spring Boot会以properties为准,但它俩同时放容易让人困惑。

4. 没有Spring Initializr的社区版IDEA怎么办:可用方案对比

前面说过,IDEA社区版无法直接通过向导创建Spring Boot项目。但办法总比困难多,这里给出三种可行方案,按推荐程度排序。

4.1 用start.spring.io网页生成项目的完整步骤

这是最接近官方推荐的方式,完全免费,不依赖IDEA版本,浏览器打开就行。

  1. 浏览器访问https://start.spring.io(网络慢或连不上的话,就用https://start.aliyun.com)。
  2. 选择Project(Maven)、Language(Java)、Spring Boot版本(建议选2.7.x,别选3.x)。
  3. 填Group、Artifact、Dependencies,操作和IDEA向导一模一样。
  4. 点击GENERATE按钮,浏览器会下载一个zip压缩包。
  5. 解压后,打开社区版IDEA,选File -> Open,直接选中这个解压后的文件夹。
  6. IDEA识别到里面有pom.xml,弹窗提示是否以Maven项目导入,选Open as Project,耐心等依赖下载完。

之后你就能像Ultimate版一样写代码、运行main方法。除了创建那一步需要在网页上操作,后面没有任何区别。

4.2 用阿里云镜像加速Spring Boot依赖下载

不管从哪个入口创建项目,最终的依赖下载都要通过网络。国内访问Maven中央仓库速度极不稳定,你不把这个配置好,光等依赖下载就能耗尽你所有的热情。

配置方法很简单:找到你本地Maven的conf/settings.xml(我一般是把IDEA自带的Maven,或者自己下载的Maven 3.8.x的路径记下来,直接用它的settings.xml)。在<mirrors>标签里加入:

<mirror> <id>aliyunmaven</id> <mirrorOf>central</mirrorOf> <name>阿里云公共仓库</name> <url>https://maven.aliyun.com/repository/central</url> </mirror>

然后回到IDEA菜单File -> Settings -> Build, Execution, Deployment -> Build Tools -> Maven:

  • Maven home path:选择你改了settings.xml的那个Maven安装路径。
  • User settings file:勾选Override,并指定到那个settings.xml。
  • Local repository:会自动识别,确认一下路径没有奇怪的权限问题。

做完后点Apply,再刷新项目。你会发现依赖下载速度直接起飞,这个配置能治80%的"项目卡在建索引/卡在下载依赖"问题。

4.3 从GitHub等模板仓库导入:另一种思路

如果你不想每次都用网页生成,可以从Gitee或GitHub上找一个自己信任的"Spring Boot基础框架"模板仓库,git clone下来,然后改一下pom.xml里的groupId、artifactId、项目名,再File -> Open导入。这样做的好处是模板里可能已经集成了通用返回体、全局异常处理、MyBatis Plus等常用配置,省事;坏处是你需要能看懂别人的代码,不然出问题都不知道在哪改。

对新手,我不太推荐这条路径,因为你还没能力区分"模板里哪些是必须的、哪些是多余的"。老老实实用start.spring.io完事儿。

5. 高频问题排查:版本太高、下载超时、启动报错、IDEA卡顿

创建Spring Boot项目的坑,撑起我写这篇文章的80%理由。这些问题你在官网教程里很少看到集中讲解,但在真实开发里几乎天天见。

5.1 "Cannot start internal HTTP server"背后的原因与解决

用IDEA 2023的朋友应该不陌生,有时打开IDEA会弹出Cannot start internal HTTP server,后面还跟一句类似Port already in use: 63342。这个Internal HTTP Server是IDEA用来跑JavaScript调试、源码插桩、插件通信用的内置服务,端口固定为63342。

出现这个报错,最常见的几个原因和对应处理:

  1. 端口被占用:别的应用占了63342端口。在命令行执行netstat -ano | findstr 63342(Windows)或lsof -i:63342(macOS)查一下。如果是你自己的PID,可以在任务管理器里结束掉;如果查不到,就换IDEA的内置端口。
  2. IDEA网络代理设置有问题:在Settings -> System Settings -> HTTP Proxy里,如果选了Manual proxy configuration但填了非道义的代理地址,很可能导致内部通信链接失败。改成Auto-detect proxy settings,或者在没有内网要求时选No proxy。
  3. IDEA配置缓存损坏:File -> Invalidate Caches -> 勾选Clear file system cache and Local History -> Invalidate and Restart。

我的习惯是先试方案3,因为前两个排查耗时。失真了缓存往往就消失了。

5.2 依赖下载慢或失败:Maven仓库镜像配置

好多同学项目创建完,右下角一直转圈,然后报Could not resolve dependencies错误。不用怀疑,就是Maven拉取依赖失败了。除了前面配阿里云镜像外,还有两个细节:

  • 确保settings.xml里的<mirrorOf>是central,有的老教程写*,会把所有远程仓库都指向阿里云,包括某些仅存在于特殊仓库的插件,反而更麻烦。
  • 如果你觉得阿里云还不够快,可以把maven.aliyun.com的仓库换成https://maven.aliyun.com/repository/public(它是central和jcenter的聚合),兼容性更好些。

另外,Maven Wrapper(mvnw)在IDEA里第一次点击运行时会自动下载Maven发行版,也可能因为网络问题卡住。我一般是直接把Maven Wrapper对应的.mvn/wrapper/maven-wrapper.properties里改为你本地Maven,或者干脆在运行配置里使用本地Maven路径,别依赖Wrapper。

5.3 Spring Boot版本过高导致的启动失败或配置不兼容

这几种现象,基本可以判断是版本过高造成的:

  • 启动时提示Invalid source release 17:你选了Spring Boot 3.x,但JDK没切到17。
  • 代码里import javax.sql.DataSource;报红:Spring Boot 3.x下很多包已经迁移到jakarta命名空间。把javax改成jakarta就行(但前提是依赖版本也支持)。
  • 某个第三方starter(比如旧版pagehelper-spring-boot-starter)依赖拉取下来后,运行期报类找不到:老库没适配Boot 3。

解决思路不是硬熬,而是降低坑数。直接重开项目,选Spring Boot 2.7.x,你会发现舒服很多。如果工作环境硬性要求3.x,再逐个确认第三方依赖的兼容版。

5.4 IDEA启动项目特别慢:JVM参数调优和编译优化

很多人的电脑配置不差,但IDEA加载一个Spring Boot项目要一分钟起步,跑起来还卡。可以从三处调:

  • 调整IDEA本身的内存:Help -> Edit Custom VM Options,打开idea64.exe.vmoptions,把-Xmx至少调到2048m,建议4096m(具体看电脑内存)。改完重启IDEA立刻能感受到变化。
  • 关闭不常用的插件:Settings -> Plugins,把不需要的(比如部分云原生插件、行动开发插件)统统Disable。插件越多,索引越多,启动越慢。
  • 排除编译索引范围:项目右键Mark Directory as -> Excluded,把target、node_modules等目录索引排除掉。这样IDEA不会一直试图索引无关文件。

另外,Spring Boot热部署配合DevTools时,有时候会频繁重启导致缓慢,如果你只是改了个注释它也重启,可以把Settings -> Build -> Compiler -> Build project automatically和Developer Tools -> DevTools -> Restart Delay调成800ms,减少无用的重启。

最后再分享一个小习惯

按我自己的经验,创建Spring Boot项目这件事,本身不难,难点全在环境协同。所以我现在每到一个新环境,第一件事不是急着开IDEA,而是先检查JDK、Maven、镜像这些"地基",地基稳了再创建项目,基本一次通过。后面有新的Spring Boot版本、新的IDEA版本出来时,我也不会第一时间升级,先让子弹飞一会儿,等别人踩完坑再动。上面写到的每一条,都是我自己实打实趟过的,照着做能帮你省下不少跟报错对峙的时间。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/9 6:54:01

Spring全家桶学习路线:从手写IOC到微服务实战

Spring全家桶这几个字&#xff0c;劝退的威力比什么都大。我见过太多人从Java入门到放弃&#xff0c;就卡在“全家桶”这个入口上&#xff1a;Spring Framework还没弄明白&#xff0c;又看到Spring Boot、Spring MVC、Spring Security、Spring Cloud&#xff0c;后面还跟着Spri…

作者头像 李华
网站建设 2026/10/9 6:53:56

Agent-Reach 实战:CLI 优先的 AI Agent 工具调用与部署指南

1. 项目缘起与核心定位第一次看到 Agent-Reach 这个标题&#xff0c;我脑子里蹦出来的第一个念头是&#xff1a;又是一个 Agent 框架&#xff1f;市面上从 LangChain 到 AutoGPT&#xff0c;从 CrewAI 到各种国产方案&#xff0c;Agent 相关的轮子已经多到让人眼花缭乱。但仔细…

作者头像 李华
网站建设 2026/10/9 6:52:45

Agent-Reach 实战:用 Python 和 CLI 构建能真正调用工具的 AI Agent

1. 从"Agent-Reach"这个名字说起&#xff1a;它到底想解决什么问题第一次看到 Agent-Reach 这个项目名&#xff0c;我的直觉是&#xff1a;这大概率是一个围绕 AI Agent 能力边界做文章的工具。Reach 这个词在工程语境里通常有两层含义&#xff0c;一层是"触达&…

作者头像 李华
网站建设 2026/10/9 6:52:39

ELF符号表解析:从运行地址反查函数名的原理与工具实践

做Linux服务端或者嵌入式开发的兄弟&#xff0c;一定见过这种日志——程序崩了&#xff0c;回栈里全是十六进制地址&#xff0c;比如0x5567a2f1c34b。这时候最想干的一件事&#xff0c;就是从ELF文件里把这串运行地址翻译成具体的函数名&#xff0c;搞清楚到底崩在哪。这个需求…

作者头像 李华
网站建设 2026/10/9 6:52:19

JavaStorm实时日志监控告警系统落地实践与避坑指南

简介&#xff1a;基于Java与Apache Storm的日志监控告警系统项目包&#xff0c;面向需要实时处理Kafka日志并实现异常检测告警的Java后端开发者及大数据学习者&#xff0c;完整覆盖从Kafka消费、Storm拓扑处理到邮件短信通知、数据库存储的告警链路。压缩包共100个文件&#xf…

作者头像 李华
网站建设 2026/10/9 6:51:14

贪心算法与优先队列实战:最少加油次数问题详解

1. 题目本质与解题方向拆解1.1 先把题目翻译成人话LeetCode 871题&#xff0c;Minimum Number of Refueling Stops&#xff0c;题目描述其实非常直白&#xff1a;你开一辆车从起点去终点&#xff0c;起点距离终点有 target 英里&#xff0c;车油箱一开始有 startFuel 加仑油。沿…

作者头像 李华