Spring 官方的 "This Week in Spring" 系列每周汇总社区动态、版本发布和教程更新。5 月 12 日这一期的周报本身以链接集为主,没有长篇论述,但它指向的内容折射出 Spring 生态当前的关注方向。下面从几个典型主题切入,并附上可以直接跑的实践示例。
Spring Boot 3.x 的配置演进
Spring Boot 3 系列已经稳定,近期的小版本持续打磨细节:属性绑定更严格、NativeHints 支持更完善、Observability API 统一到 Micrometer 1.x 体系。周报中反复出现的链接指向 Boot 的配置迁移指南和 GraalVM native image 插件更新。
一个值得注意的变化:spring.autoconfigure.exclude 在 Boot 3.4+ 中支持在 application.yml 里直接写列表,不再必须拼逗号分隔的长字符串。
# application.yml — Boot 3.4+ 风格
spring:
autoconfigure:
exclude:
- org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration
- org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration
如果你还在用旧格式,迁移后可读性明显提升。
Spring Framework 7 的前瞻信号
周报链接里开始出现 Framework 7 的早期讨论——虚拟线程(Project Loom)的深度整合是核心议题。从 Framework 6.2 起,SimpleAsyncTaskExecutor 已经支持虚拟线程,但 7 的目标是让整个请求处理链默认跑在虚拟线程上,不再需要手动配置。
当前可以这样提前体验:
@Configuration
public class VirtualThreadConfig {
@Bean
public AsyncTaskExecutor applicationTaskExecutor() {
// Framework 6.2+ — 启用虚拟线程执行器
return new SimpleAsyncTaskExecutor("vt-") {
{
setVirtualThreads(true);
}
};
}
}
# application.properties — 同时让 Tomcat 请求线程也走虚拟线程
spring.threads.virtual.enabled=true
启动后用 jcmd <pid> Thread.dump_to_file -format=json 查看线程数,你会发现几百个并发请求只占用少量平台线程。
Spring Cloud 的 Observability 实战
周报多次提到 Micrometer 与 OpenTelemetry 的集成更新。Spring Boot 3.x 已把 tracing 和 metrics 统一到 Micrometer Observation API,但很多项目还在用旧版 Brave/Zipkin 直接注入的方式。下面是一个最小可运行的 OTel 导出配置:
<!-- pom.xml 关键依赖 -->
<dependency>
<groupId>io.micrometer</groupId>
<artifactId>micrometer-observation</artifactId>
</dependency>
<dependency>
<groupId>io.micrometer</groupId>
<artifactId>micrometer-tracing-bridge-otel</artifactId>
</dependency>
<dependency>
<groupId>io.opentelemetry</groupId>
<artifactId>opentelemetry-exporter-otlp</artifactId>
</dependency>
# application.yml — 把 trace 和 metric 都发到 OTel Collector
management:
tracing:
sampling:
probability: 1.0
otlp:
metrics:
export:
url: http://localhost:4318/v1/metrics
step: 30s
tracing:
export:
url: http://localhost:4318/v1/traces
本地用 docker run -p 4318:4318 -p 18889:18889 otel/opentelemetry-collector-contrib:0.96.0 起一个 Collector,再启动应用,访问任意接口后就能在 Collector 的 debug 端口看到导出的数据。
Spring Security 的简化趋势
周报链接指向 Security 6.4+ 的几篇教程,核心主题是:用 SecurityFilterChain lambda DSL 替代 WebSecurityConfigurerAdapter(后者已在 6.x 移除),以及方法级安全的 @PreAuthorize 与新注解 @AuthorizationPreFilter 的对比。
一个简洁的 SecurityConfig 示例:
@Configuration
@EnableMethodSecurity
public class SecurityConfig {
@Bean
SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
return http
.authorizeHttpRequests(auth -> auth
.requestMatchers("/api/public/**").permitAll()
.anyRequest().authenticated()
)
.oauth2ResourceServer(oauth2 -> oauth2
.jwt(Customizer.withDefaults())
)
.build();
}
}
注意 @EnableMethodSecurity 替代了旧的 @EnableGlobalMethodSecurity,默认开启 pre/post authorize,不再需要额外参数。
实践检查清单
从这期周报指向的内容出发,可以梳理出几件值得近期做的事:
| 动作 | 优先级 | 说明 |
|---|---|---|
| 升级 Boot 到 3.4+ | 高 | 配置格式、Observability、虚拟线程支持都更成熟 |
| 把 tracing 从 Brave 切到 Micrometer-OTel 桥接 | 中 | Brave 已进入维护模式,新功能只在 Micrometer 体系推进 |
| 在非生产环境试跑虚拟线程 | 中 | spring.threads.virtual.enabled=true 一行即可开启,观察线程行为 |
| Security DSL 全面切换到 lambda 风格 | 高 | 旧式 configure() 方法已不可用,lambda DSL 是唯一正途 |
| 关注 Framework 7 的里程碑公告 | 低 | 目前还是早期阶段,但虚拟线程默认化会影响架构决策 |
每周扫一遍 "This Week in Spring" 不需要逐条精读,但把其中反复出现的主题(这次是虚拟线程和 Observability)标记出来,对照自己的项目做一两件具体动作,就能跟上生态节奏而不被淹没在链接堆里。