第一个 Spring Boot 应用
实验目标
创建并运行一个完整的 Spring Boot REST API,理解 IoC 容器、依赖注入、自动配置。
环境准备
- Java 17+
- Maven 或 Gradle
- IDE(IntelliJ IDEA 推荐)
实验 1:使用 Spring Initializr
选择:
- Project: Maven
- Language: Java
- Spring Boot: 3.2.x
- Java: 17
- Dependencies: Spring Web, Spring Boot DevTools
下载并解压项目。
实验 2:第一个 REST API
java
package com.example.demo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.*;
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
@RestController
@RequestMapping("/api")
class HelloController {
@GetMapping("/hello")
public String hello() {
return "Hello Spring Boot!";
}
@GetMapping("/users/{id}")
public User getUser(@PathVariable Long id) {
return new User(id, "John Doe");
}
@PostMapping("/users")
public User createUser(@RequestBody User user) {
return user;
}
}
record User(Long id, String name) {}运行:
bash
./mvnw spring-boot:run测试:
bash
curl http://localhost:8080/api/hello
# 输出: Hello Spring Boot!
curl http://localhost:8080/api/users/1
# 输出: {"id":1,"name":"John Doe"}实验 3:依赖注入
java
@Service
public class UserService {
public User findById(Long id) {
return new User(id, "John Doe");
}
public User save(User user) {
System.out.println("Saving user: " + user.name());
return user;
}
}
@RestController
@RequestMapping("/api/users")
public class UserController {
private final UserService userService;
@Autowired
public UserController(UserService userService) {
this.userService = userService;
}
@GetMapping("/{id}")
public User getUser(@PathVariable Long id) {
return userService.findById(id);
}
@PostMapping
public User createUser(@RequestBody User user) {
return userService.save(user);
}
}实验 4:配置属性
application.properties:
properties
server.port=9090
app.name=My Application
app.version=1.0.0java
@Configuration
@ConfigurationProperties(prefix = "app")
public class AppProperties {
private String name;
private String version;
public String getName() { return name; }
public void setName(String name) { this.name = name; }
public String getVersion() { return version; }
public void setVersion(String version) { this.version = version; }
}
@RestController
public class ConfigController {
@Autowired
private AppProperties appProperties;
@GetMapping("/config")
public Map<String, String> getConfig() {
return Map.of(
"name", appProperties.getName(),
"version", appProperties.getVersion()
);
}
}验收标准
✅ 应用成功启动
✅ REST API 正确响应
✅ 依赖注入正常工作
✅ 配置属性正确加载
✅ 热重载(DevTools)正常工作
返回第一章概览