Spring 5:使用@Nullable的可选注入点

问题描述 投票:2回答:1

Spring 5增加了对Spring API的Null安全性的支持。现在我们也可以使用@Nullable来指示可选的注入点。

但是,当我们应该使用@Nullable依赖时,我无法理解用例?

spring文档没有关于@Nullable依赖的示例

@Component
    public class SomeClass {

        @Nullable
        @Autowired
        private MyService service;  

        public void someMethod()
        {
            service.someMethod();       
        } 

    }
spring nullable
1个回答
4
投票

现在我们也可以使用@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) {
   ...
} 
© www.soinside.com 2019 - 2024. All rights reserved.