实现CrudRepository时IntelliJ提示@NonNullApi警告,为何无对应注解?
警告来源解析
- 这个警告的根源是Spring框架的包级非空注解:
@NonNullApi不是直接标注在CrudRepository的方法上,而是标注在CrudRepository所在的整个包(比如org.springframework.data.repository)上。 - Spring Data的核心包通过
@NonNullApi注解,指定包内所有接口的方法参数、返回值默认都遵循非空约束——不需要每个方法都单独加@NonNull,包级注解会统一生效。 - IntelliJ的代码检查会识别这种包级的非空约定,当你实现CrudRepository的方法时,如果你的实现方法没有显式声明非空(或者没有用
@Nullable标注允许空值),就会触发这个警告,提示你当前方法覆盖了受包级@NonNullApi约束的接口方法,应该保持一致的非空约定。 - 你可以查看CrudRepository所在包的
package-info.java文件,里面会有类似这样的代码:
@org.springframework.lang.NonNullApi package org.springframework.data.repository;
内容的提问来源于stack exchange,提问作者Gaetan L.
相关产品推荐
相关产品推荐

