升级spring-web至6.0.0+后出现ResponseStatusException访问权限错误
Spring Web 6.x升级后ResponseStatusException.status访问报错解决方法
问题原因
Spring Web 6.0(含6.0.4版本)对ResponseStatusException类做了重构,将原本的status字段从protected改为私有,直接访问throwable.status会触发编译错误:Cannot access 'status': it is invisible (private in a supertype) in 'ResponseStatusException'。
解决方法
使用类提供的公开访问方法替代直接访问私有字段:
修改前代码
is ResponseStatusException -> { serverWebExchange.response.statusCode = throwable.status }
修改后代码
is ResponseStatusException -> { serverWebExchange.response.statusCode = throwable.statusCode }
或者兼容Java风格的写法:
is ResponseStatusException -> { serverWebExchange.response.statusCode = throwable.getStatusCode() }
补充说明
Spring 6.x在核心类设计上更严格遵循封装原则,不再直接暴露异常类的内部字段,统一通过标准getter方法提供访问入口。后续版本升级时,建议优先参考官方API变更说明,避免依赖类的内部实现细节。
内容的提问来源于stack exchange,提问作者EXEC1
相关产品推荐
相关产品推荐

