Skip to content

第一个 Spring Boot 应用 ​

实验目标 ​

创建并运行一个完整的 Spring Boot REST API,理解 IoC 容器、依赖注入、自动配置。

环境准备 ​

  • Java 17+
  • Maven 或 Gradle
  • IDE(IntelliJ IDEA 推荐)

实验 1:使用 Spring Initializr ​

访问 https://start.spring.io/

选择:

  • 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.0
java
@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)正常工作

返回第一章概览

用心记录每一步成长