我遇到了Spring @Required
注释,我不确定何时使用它。
我的主要审讯是:什么可能导致不依赖于Spring依赖,从而证明使用@Required
是正确的?
答案 0 :(得分:2)
首先在参考文档中查看4.9.1 @Required。恕我直言如今,当自动装配如此常用时,这种注释的使用受到限制。
在XML时代它非常好 - 如果你忘了在XML中定义<property name="movieFinder" .../>
但是记得将@Required
放在movieFinder
字段或setter周围,Spring就会抛出异常。 / p>
请注意,此注释不会使您免于最常见的Spring-novice错误 - 在容器控件之外使用new
运算符手动创建bean。 Spring必须对bean进行后处理,并且只有在带注释的类实际由容器创建时才会抛出异常(但是依赖项没有被注入)。
现在,您只需使用@Autowired
/ @Resource
/ @Inject
注释该字段,如果找不到bean(否则将离开null
),则抛出异常(没有这样的豆或类似的)。如果您可以添加@Required
注释,那么是什么阻止您将其替换为@Autowired
并完全删除XML?
话虽如此,对于某些@Required
可能有一个很好的文档值。
答案 1 :(得分:1)
大多数情况下都是为了防止开发人员出错。
有时开发人员会认为某些事情会出现在实际上并不存在的情况,包括:
在这些情况下,在上下文加载时失败更好,而不是像以后的NPE那样。