Spring Boot作为当前Java领域最流行的框架之一,极大地简化了Spring应用的初始搭建和开发过程。本文将带你从零开始,创建一个简单的Spring Boot Web应用,并通过详细的步骤解释整个过程。
一、Spring Boot简介
Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。它具有以下特点:
自动配置:基于类路径和已配置的bean自动配置Spring应用
起步依赖:提供了一系列"starter"依赖,简化Maven/Gradle配置
内嵌服务器:默认内嵌Tomcat、Jetty或Undertow,无需部署WAR文件
生产就绪:提供健康检查、指标、外部化配置等生产级功能
二、创建Spring Boot项目
我们使用IDE创建:
以IntelliJ IDEA为例:
打开IDEA,选择"New Project"
选择"Spring Initializr"
填写项目信息(记得选Maven,这里我默认你之前已经配置了,没有的话要去配置)
选择依赖(勾选Spring Web)
完成创建

三、项目结构说明
创建完成后,项目结构如下:
text
demo/
├── src/
│ ├── main/
│ │ ├── java/
│ │ │ └── com.niuniu/
│ │ │ └── DemoApplication.java # 主启动类
│ │ └── resources/
│ │ ├── static/ # 静态资源
│ │ ├── templates/ # 模板文件
│ │ └── application.properties # 配置文件
│ └── test/ # 测试代码
├── pom.xml # Maven配置文件
└── README.md
四、编写第一个控制器
创建控制器类
在src/main/java/com/niuniu/目录下创建HelloController.java:
package com.niuniu;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class HelloController {
// 使用@GetMapping更明确地表示处理GET请求
@GetMapping("/hello")
public String hello(@RequestParam(value = "name", defaultValue = "World") String name) {
System.out.println("Received request with name: " + name);
// 简单业务逻辑示例
String greeting = "Hello " + name + "!";
// 可以添加更多业务逻辑
if ("Spring".equalsIgnoreCase(name)) {
greeting += " Welcome to Spring Boot!";
}
return greeting;
}
// 添加第二个端点作为示例
@GetMapping("/greet")
public String greet(@RequestParam(value = "user", required = false) String user) {
if (user == null || user.trim().isEmpty()) {
return "Hello Anonymous User!";
}
return "Good day, " + user + "!";
}
}
1. 添加主页
创建简单的HTML主页,在src/main/resources/static目录下创建index.html:
Spring Boot 大角猫start
Spring Boot Web-作者:大角猫ljp
这是一个简单的Spring Boot Web应用程序,大角猫ljp在此创建。
可用端点:
五、运行应用程序
方式1:通过主类运行
找到主启动类DemoApplication.java:
package com.niuniu;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
//启动类
@SpringBootApplication
public class SpringbootQuickstartApplication {
public static void main(String[] args) {
SpringApplication.run(SpringbootQuickstartApplication.class, args);
}
}
六、测试应用
1. 验证应用是否启动
启动成功后,控制台会显示类似信息:

2. 测试端点
打开浏览器输入 http://localhost:8080/

测试:使用默认值
text
http://localhost:8080/hello
响应:Hello World!
测试:测试第二个端点
text
http://localhost:8080/greet?user=Developer
响应:Good day, Developer!
七、配置与应用
1. 修改端口号
在src/main/resources/application.properties中添加
2. 添加日志配置
在application.properties中添加日志配置
3. 完整的application.properties示例
properties
# 应用基本信息
spring.application.name=demo-app
# 服务器配置
server.port=8080
server.servlet.context-path=/
# 日志配置
logging.level.root=WARN
logging.level.com.niuniu=INFO
# 热部署配置(开发环境)
spring.devtools.restart.enabled=true
spring.devtools.restart.additional-paths=src/main/java
八、项目扩展
添加错误处理
创建全局异常处理:
package com.niuniu.exception;
import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseStatus;
import org.springframework.web.bind.annotation.RestControllerAdvice;
@RestControllerAdvice
public class GlobalExceptionHandler {
@ExceptionHandler(Exception.class)
@ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR)
public String handleAllExceptions(Exception ex) {
return "服务器内部错误: " + ex.getMessage();
}
}
添加单元测试
在src/test/java/com/niuniu/目录下创建测试类:
package com.niuniu;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.web.servlet.MockMvc;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
@SpringBootTest
@AutoConfigureMockMvc
class HelloControllerTest {
@Autowired
private MockMvc mockMvc;
@Test
void helloEndpoint_shouldReturnGreeting() throws Exception {
mockMvc.perform(get("/hello").param("name", "Spring"))
.andExpect(status().isOk())
.andExpect(content().string("Hello Spring! Welcome to Spring Boot!"));
}
@Test
void helloEndpoint_withoutName_shouldUseDefault() throws Exception {
mockMvc.perform(get("/hello"))
.andExpect(status().isOk())
.andExpect(content().string("Hello World!"));
}
}
九、部署与打包
1. 构建可执行JAR
Spring Boot默认打包为可执行JAR,包含所有依赖和内嵌服务器:
bash
# 清理并打包
mvn clean package
# 查看生成的文件
ls -la target/*.jar
2. 运行打包的应用
bash
java -jar target/demo-0.0.1-SNAPSHOT.jar
# 指定运行参数
java -jar target/demo-0.0.1-SNAPSHOT.jar --server.port=8081
3. 构建Docker镜像
创建Dockerfile:
dockerfile
FROM openjdk:17-jdk-slim
VOLUME /tmp
COPY target/*.jar app.jar
ENTRYPOINT ["java","-jar","/app.jar"]
EXPOSE 8080
构建和运行:
bash
# 构建镜像
docker build -t spring-boot-demo .
# 运行容器
docker run -p 8080:8080 spring-boot-demo
十、常见问题与解决方案
1. 端口被占用
问题:启动时报端口被占用
解决:修改application.properties中的端口或停止占用端口的进程
2. 依赖下载失败
问题:Maven依赖下载失败
解决:
检查网络连接
使用国内镜像源(如阿里云Maven镜像)
清理本地仓库后重试
3. 热部署不生效
问题:修改代码后需要重启应用
解决:
确认添加了spring-boot-devtools依赖
检查IDE自动编译配置
重启IDE或重新导入项目
总结
通过本文,我们完成了以下内容:
了解了Spring Boot的基本概念和优势
学会了创建Spring Boot项目的多种方法
编写了一个简单的REST控制器
掌握了Spring Boot应用的运行、测试和配置
学习了项目扩展和部署的基本知识
这个简单的"Hello"应用虽然基础,但它包含了Spring Boot Web开发的核心要素。从这里出发,你可以继续学习:
Spring Data JPA进行数据库操作
Spring Security添加安全认证
Spring Cloud构建微服务
RESTful API设计最佳实践
Spring Boot的强大之处在于它的"约定优于配置"理念,让你能够快速搭建生产级应用。希望这个入门指南能帮助你开启Spring Boot开发之旅!
浙公网安备 33010602011771号