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

时间:2017-12-19 10:51:14

标签: spring nullable

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

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

spring文档没有关于@Nullable依赖项

的示例
@Component
    public class SomeClass {

        @Nullable
        @Autowired
        private MyService service;  

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

    }

1 个答案:

答案 0 :(得分:4)

  

现在我们也可以使用@Nullable来指示可选的注入点。

我认为,如果您的依赖不是强制性的,那就有意义了 没有e = ElementTree.parse('/tmp/test.xml')

你可以写什么
@Nullable

现在使用此代码:

@Autowired(required = false)
private MyService service; 

您可以使用标准方式传达该字段可能为@Nullable @Autowired private MyService service; 根据{{​​3}},标准方法允许利用支持此注释的工具:

  

利用JSR 305元注释来指示Java中的可空性   支持JSR 305的常用工具,并由Kotlin用来推断   Spring API的可空性。

请注意,依赖关系中的null是其中一种情况 在javadoc上,您还可以阅读:

  

一个常见的Spring注释,用于声明带注释的元素   在某些情况下无效。

还有:

  

应该在参数,返回值和字段级别使用。方法   override应该重复父@Nullable注释,除非它们表现出来   不同。

因此,装饰方法返回也是有道理的:

@Nullable

或参数:

@Nullable
public Foo doThat() {
   ...
}