Spring Boot
快速创建项目
Section titled “快速创建项目”使用 Spring Initializr 生成项目骨架:
curl https://start.spring.io/starter.zip \ -d dependencies=web,data-jpa \ -d javaVersion=21 \ -d type=maven-project \ -o demo.zip && unzip demo.zip -d demoREST API 开发
Section titled “REST API 开发”@RestController@RequestMapping("/api/users")public class UserController {
private final UserService userService;
public UserController(UserService userService) { this.userService = userService; }
@GetMapping public List<User> list() { return userService.findAll(); }
@GetMapping("/{id}") public User get(@PathVariable Long id) { return userService.findById(id); }
@PostMapping @ResponseStatus(HttpStatus.CREATED) public User create(@RequestBody @Valid CreateUserRequest request) { return userService.create(request); }
@DeleteMapping("/{id}") @ResponseStatus(HttpStatus.NO_CONTENT) public void delete(@PathVariable Long id) { userService.delete(id); }}自动配置原理
Section titled “自动配置原理”Spring Boot 的核心是 @SpringBootApplication,它组合了:
@SpringBootConfiguration— 标识配置类@EnableAutoConfiguration— 启用自动配置@ComponentScan— 组件扫描
自动配置通过 spring.factories 和条件注解实现:
@Configuration@ConditionalOnClass(DataSource.class)@ConditionalOnMissingBean(DataSource.class)@EnableConfigurationProperties(DataSourceProperties.class)public class DataSourceAutoConfiguration { // 仅当 classpath 有 DataSource 且没有自定义 DataSource 时才生效}application.yml:
server: port: 8080
spring: datasource: url: jdbc:postgresql://localhost:5432/mydb username: postgres password: secret jpa: hibernate: ddl-auto: update
app: jwt: secret: ${JWT_SECRET:default-secret} expiration: 86400000使用 @Value 或 @ConfigurationProperties 注入:
@ConfigurationProperties(prefix = "app.jwt")public record JwtProperties(String secret, long expiration) {}controller/ → 接收请求、参数校验service/ → 业务逻辑repository/ → 数据访问model/ → 实体与 DTOconfig/ → 配置类