Spring Boot 4 WebFlux中RouterFunction泛型非空警告如何解决?
RouterFunction 出现"Non-null type argument is expected"警告的问题解析
警告含义
这个警告是IntelliJ IDEA的空值检查机制触发的。RouterFunction的泛型参数要求使用被明确标记为非空的类型,但ServerResponse本身没有自带非空注解,IDE判定这里存在潜在的空值风险,因此弹出该警告。
不抑制警告的消除方法
有两种合规的方式可以消除这个警告:
方法1:给类或包添加@NonNullApi注解
Spring的@NonNullApi注解可以标记整个类或包下的所有类型默认都是非空的。将它加到WebConfig类上,IDE就会自动识别ServerResponse作为泛型参数时是非空的:
import org.springframework.lang.NonNullApi; import org.springframework.web.reactive.function.server.RouterFunction; import org.springframework.web.reactive.function.server.RouterFunctions; import org.springframework.web.reactive.function.server.ServerResponse; import org.springframework.http.HttpStatus; import static org.springframework.web.reactive.function.server.RequestPredicates.GET; @Configuration @NonNullApi public class WebConfig { @Bean public RouterFunction<ServerResponse> route() { return RouterFunctions .route(GET("/test"), req -> ServerResponse.status(HttpStatus.OK).build()); } }
方法2:给泛型参数显式添加@NonNull注解
直接在泛型参数ServerResponse前加上@NonNull注解,明确标记它是非空类型:
import org.springframework.lang.NonNull; import org.springframework.web.reactive.function.server.RouterFunction; import org.springframework.web.reactive.function.server.RouterFunctions; import org.springframework.web.reactive.function.server.ServerResponse; import org.springframework.http.HttpStatus; import static org.springframework.web.reactive.function.server.RequestPredicates.GET; @Configuration public class WebConfig { @Bean public RouterFunction<@NonNull ServerResponse> route() { return RouterFunctions .route(GET("/test"), req -> ServerResponse.status(HttpStatus.OK).build()); } }
内容的提问来源于stack exchange,提问作者Sergey Zolotarev
相关产品推荐
相关产品推荐

