Spring Boot 3.4:你必须知道的7个新特性
Spring Boot 3.4 引入了多项显著的新特性,旨在提升开发者的生产力、性能以及集成能力。本文将详细介绍这些特性,并通过完整的代码示例和逐步指导,对比新旧实现方式。
1. 增强的 Spring AI 集成
新特性:
Spring Boot 3.4 提供了对 Spring AI 的一流支持,使 AI 服务的消费更加便捷,尤其是在创建和管理生成式 AI 管道时。
旧方式(Spring Boot 3.4 之前)
开发者需要手动配置外部 AI 库,并编写样板代码来集成模型:
@Configuration
public class AIConfig {
@Bean
public OpenAiService openAiService() {
String apiKey = System.getenv("OPENAI_API_KEY");
return new OpenAiService(apiKey);
}
}
@RestController
@RequestMapping("/ai")
public class AIController {
private final OpenAiService openAiService;
public AIController(OpenAiService openAiService) {
this.openAiService = openAiService;
}
@PostMapping("/generate")
public String generateText(@RequestBody String prompt) {
CompletionRequest request = CompletionRequest.builder()
.prompt(prompt)
.maxTokens(100)
.build();
return openAiService.createCompletion(request).getChoices().get(0).getText();
}
}
新方式(Spring Boot 3.4)
借助新版本的自动配置支持,开发者可以专注于业务逻辑,无需手动配置样板代码:
@SpringBootApplication
public class AiApplication {
public static void main(String[] args) {
SpringApplication.run(AiApplication.class, args);
}
}
@RestController
@RequestMapping("/ai")
public class AIController {
private final AiService aiService;
public AIController(AiService aiService) {
this.aiService = aiService;
}
@PostMapping("/generate")
public String generateText(@RequestBody String prompt) {
return aiService.generate(prompt, new AiOptions().maxTokens(100));
}
}
对比:
- 旧方式:需要手动配置 Bean 和处理 API 调用。
- 新方式:直接使用
spring-ai-starter
提供的AiService
,无需手动配置。
2. 改进的可观测性与 Micrometer 2.0
新特性:
Micrometer 2.0 提供了更好的直方图、百分位数计算支持,并集成 OpenTelemetry。
旧方式(Spring Boot 3.4 之前)
需要手动配置指标并导出:
@Configuration
public class MetricsConfig {
@Bean
public MeterRegistryCustomizer<MeterRegistry> metricsCommonTags() {
return registry -> registry.config().commonTags("application", "my-service");
}
}
新方式(Spring Boot 3.4)
直接在 application.yml
中启用 Prometheus 指标导出:
management:
metrics:
export:
prometheus:
enabled: true
distribution:
percentiles-histogram: true
percentiles: 0.5, 0.9, 0.99
对比:
- 旧方式:需要额外配置
MeterRegistryCustomizer
。 - 新方式:通过简单配置文件即可启用高级指标。
3. 更好的虚拟线程支持
新特性:
Spring Boot 3.4 对 Java 虚拟线程的支持更加完善,简化了其在 Web 和响应式应用中的使用。
旧方式(Spring Boot 3.4 之前)
手动配置虚拟线程池:
@Configuration
public class ExecutorConfig {
@Bean
public ExecutorService virtualThreadExecutor() {
return Executors.newVirtualThreadPerTaskExecutor();
}
}
新方式(Spring Boot 3.4)
通过配置文件直接启用虚拟线程:
spring:
threads:
virtual: enabled
在代码中无缝使用虚拟线程:
@RestController
public class DemoController {
@GetMapping("/compute")
public CompletableFuture<String> compute() {
return CompletableFuture.supplyAsync(() -> "Hello from Virtual Threads!");
}
}
4. 动态配置与新绑定特性
新特性:
使用更简洁的注解和记录类实现动态配置绑定。
新方式(Spring Boot 3.4)
@ConfigurationPropertiesScan
public class MyApp {
public static void main(String[] args) {
SpringApplication.run(MyApp.class, args);
}
}
@ConfigurationProperties(prefix = "my.app")
public record AppProperties(String name, String description) {}
5. 声明式安全策略的简化
新特性:
声明式语法简化了安全配置。
新方式(Spring Boot 3.4)
@SecurityPolicy
public class SecurityConfig {
@Authorize("/admin/**")
public boolean adminAccess(Authentication auth) {
return auth.getAuthorities().contains(new SimpleGrantedAuthority("ROLE_ADMIN"));
}
}
6. 声明式 REST 客户端增强
新特性:
通过注解和 @HttpExchange
简化 REST API 调用。
新方式(Spring Boot 3.4)
@HttpExchange("/users")
public interface UserClient {
@GetExchange("/{id}")
User getUser(@PathVariable Long id);
@PostExchange
User createUser(@RequestBody User user);
}
7. 改进的 Testcontainers 集成
新特性:
自动管理容器生命周期,简化配置。
新方式(Spring Boot 3.4)
@Testcontainers
@SpringBootTest
public class MyRepositoryTests {
@Container
static PostgreSQLContainer<?> postgres = new PostgreSQLContainer<>("postgres:14");
@DynamicPropertySource
static void registerProperties(DynamicPropertyRegistry registry) {
registry.add("spring.datasource.url", postgres::getJdbcUrl);
registry.add("spring.datasource.username", postgres::getUsername);
registry.add("spring.datasource.password", postgres::getPassword);
}
}
以上就是 Spring Boot 3.4 的主要特性。如果你正在寻找提升生产力的方法,这些新功能将是你的得力助手! 🎉
评论区