Spring 5增加了对Spring API的Null安全性的支持。现在我们也可以使用@Nullable
来指示可选的注入点。
但是,当我们应该使用@Nullable
依赖时,我无法理解用例?
spring文档没有关于@Nullable
依赖的示例
@Component
public class SomeClass {
@Nullable
@Autowired
private MyService service;
public void someMethod()
{
service.someMethod();
}
}
现在我们也可以使用@Nullable来指示可选的注入点。
我认为如果你的依赖不是强制性的,这是有道理的。
没有@Nullable
你可以写什么:
@Autowired(required = false)
private MyService service;
现在有了这段代码:
@Nullable
@Autowired
private MyService service;
你可以使用一种标准的方式来表达该领域可能是null
。
根据javadoc,标准方法允许利用支持此注释的工具:
利用JSR 305元注释来指示Java中的可空性,以及JSR 305支持的常用工具,并由Kotlin用于推断Spring API的可空性。
请注意,@Nullable
依赖于其他情况。
在javadoc上,您还可以阅读:
一个常见的Spring注释,用于声明在某些情况下带注释的元素可以为null。
并且 :
应该在参数,返回值和字段级别使用。方法覆盖应重复父@Nullable注释,除非它们的行为不同。
因此,装饰方法返回也是有意义的:
@Nullable
public Foo doThat() {
...
}
或参数:
public Foo doThat(@Nullable Bar) {
...
}