什么可能导致不在Spring中设置依赖

时间:2012-07-09 16:19:26

标签: spring dependency-injection annotations required

我遇到了Spring @Required注释,我不确定何时使用它。

我的主要审讯是:什么可能导致不依赖于Spring依赖,从而证明使用@Required是正确的?

2 个答案:

答案 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)

大多数情况下都是为了防止开发人员出错。

有时开发人员会认为某些事情会出现在实际上并不存在的情况,包括:

  1. 只是忘了添加豆
  2. 依赖性问题(来自依赖项的组件被自动检测)
  3. 类型/包误解
  4. 在这些情况下,在上下文加载时失败更好,而不是像以后的NPE那样。