一、Spring Boot 3.x的核心变化
Spring Boot 3.x基于Spring Framework 6,最低要求Java 17,推荐Java 21。
1.1 必须关注的三大变化
javax.servletjavax.servlet-apijakarta.servletjakarta.servlet-api
javax.全部改为jakarta.,这是最大的破坏性变更。升级时第一步就是全局替换。
// Spring Boot 3原生支持AOT编译
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}编译命令:
# 生成原生镜像 native-maven-plugin:compile-native # 对比启动时间 java -jar app.jar # 启动时间:2-3秒 ./app # 启动时间:0.05-0.1秒
启动速度提升30-50倍,内存占用减少50-80%。
# application.yml spring: threads: virtual: enabled: true
一行配置开启,每个请求一个虚拟线程,无需线程池调优。
二、生产级配置模板
2.1 数据库连接池优化
spring: datasource: hikari: maximum-pool-size: 20 minimum-idle: 5 idle-timeout: 300000 connection-timeout: 2000 max-lifetime: 1800000 leak-detection-threshold: 60000
2.2 Redis缓存配置
@Configuration
public class RedisConfig {
@Bean
public RedisCacheManager cacheManager(RedisConnectionFactory factory) {
RedisCacheConfiguration config = RedisCacheConfiguration
.defaultCacheConfig()
.entryTtl(Duration.ofMinutes(30))
.serializeValuesWith(RedisSerializationContext
.SerializationPair.fromSerializer(
new GenericJackson2JsonRedisSerializer()));
return RedisCacheManager.builder(factory)
.cacheDefaults(config).build();
}
}三、从单体到微服务
3.1 渐进式拆分策略
阶段1:模块化单体(Module Monolith) ├── user-service(包级别隔离) ├── order-service ├── payment-service └── 共享common模块 阶段2:服务拆分 ├── user-service(独立应用) ├── order-service ├── payment-service ├── api-gateway(Spring Cloud Gateway) └── service-registry(Nacos)
3.2 API Gateway配置
spring: cloud: gateway: routes: - id: user-service uri: lb://user-service predicates: - Path=/api/users/** filters: - name: CircuitBreaker args: name: userCircuitBreaker fallbackUri: forward:/fallback/users
Spring Boot 3.x的生态已经非常成熟,GraalVM+虚拟线程的组合让Java在云原生场景下的竞争力大幅提升。