成功搭建可运行、可调试、能打包部署的spring boot完整项目,包含数据库连接、web接口、配置分离和启动验证。

从零开始在IntelliJ IDEA中搭建一个可运行、可调试、能打包部署的Spring Boot真实项目,不是创建空模板,而是包含数据库连接、Web接口、配置分离和启动验证的完整流程。
新建Spring Boot项目工程
打开IDEA → New Project → 左侧选择 【Spring Initializr】 → 确保右侧的URL是 https://start.spring.io(不是localhost或空白)→ 项目SDK选已安装的JDK 17或21(JDK 8已不推荐用于新项目)。
填写Group为com.example,Artifact填your-project-name,Package name自动同步,Type选Maven,Language选Java,Spring Boot版本选3.2.x(避免选3.3.x,部分starter尚未完全适配)。
点击Next → 在Dependencies页面勾选:Spring Web、Spring Data JDBC(或Spring Data JPA)、H2 Database(开发阶段轻量嵌入式数据库)、Lombok(减少样板代码)→ Finish。
配置application.yml启用Web服务
打开src/main/resources/application.yml,删除默认生成的application.properties(二者不可共存,否则Spring Boot会报错)。
写入以下内容:
server:
port: 8080
spring:
application:
name: demo-service
h2:
console:
enabled: true
path: /h2-console
这一步必须做,否则启动后访问 http://localhost:8080 不会响应,且H2控制台无法打开。
编写第一个REST接口
在src/main/java/com/example/yourprojectname下新建包controller,再新建类HelloController.java。
添加@RestController注解,并写一个@GetMapping("/")方法返回字符串"OK"。
确保该类与@SpringBootApplication标注的主启动类在同级或子包下——【否则Spring Boot扫描不到这个Controller,启动成功但访问404】。
添加数据库实体与简单查询
方法一:用JPA快速建表
新建entity包 → 创建User.java,加@Entity、@Id、@GeneratedValue注解,字段含id(Long)、name(String)、email(String)。
新建repository包 → 创建UserRepository接口,继承JpaRepository
在HelloController中自动注入UserRepository,写一个/get-users接口,调用repository.findAll()并返回List
方法二:纯JDBC手动执行SQL(适合不想引入JPA代理开销的场景)
删掉JPA依赖,保留spring-boot-starter-jdbc和h2 → 新建config包 → 创建DataSourceConfig.java,用@Bean声明DataSource(无需额外配置,H2默认生效)→ 新建service包 → 写UserService,用JdbcTemplate.query()查SELECT * FROM USER(注意:首次启动时H2会自动建USER表,但需先执行CREATE TABLE IF NOT EXISTS USER(...)语句,否则报错)。
运行并验证项目是否真实可用
第一步:确认IDEA右上角的Maven工具栏已加载所有依赖,无红色报错提示。
第二步:找到带有@SpringBootApplication注解的主类(通常叫YourProjectNameApplication),右键 → Run 'YourProjectNameApplication'。
第三步:观察控制台输出,直到出现“Tomcat started on port(s): 8080”和“Started YourProjectNameApplication in X.XXX seconds”。
第四步:浏览器打开 http://localhost:8080 → 返回"OK";再打开 http://localhost:8080/h2-console → 输入JDBC URL jdbc:h2:mem:testdb → 点击Connect → 查看是否已有USER表(若无,执行CREATE TABLE USER(ID BIGINT AUTO_INCREMENT, NAME VARCHAR(255), EMAIL VARCHAR(255)))。
第五步:调用 http://localhost:8080/get-users,返回空JSON数组[]即表示数据库通路已打通。











