2012-07-09 64 views

回答

2

首先在参考文档中检查4.9.1 @Required。恕我直言,自动装配如此常用,这种注释的使用受到限制。

这是在XML日子相当不错 - 如果你忘了定义XML <property name="movieFinder" .../>但记得把@Required周围movieFinder场或setter,春天会抛出异常。

请注意,这个注释并不能为您解决最常见的Spring新手错误 - 使用容器控件之外的new运算符手动创建一个bean。 Spring必须对bean进行后处理,并且只有当注释的类实际上由容器创建时(但依赖关系未被注入)时才抛出异常。

这些日子里,你只是标注的那场与@Autowired/@Resource/@Inject,如果未发现豆(否则离开null)抛出异常(没有这样的豆或类似)。如果你可以放@Required注释,什么能够防止你用@Autowired替换它,并完全摆脱XML?

这就是说,对于一些@Required可能有一个很好的文档价值。

+0

+1对于很好的解释。只是想知道在使用XML来定义bean(而不是简单的注释)并使用像@ @ Required这样的注释的情况下,这可能是一种情况吗?如果你使用注解来定义bean,那么'@ Required'将如何来拯救? – xyz 2012-07-09 16:34:32

+0

@Ajinkya:再次恕我直言,如果你已经开始使用注释,完全去为他们。正如我上面所写的,如果您使用注释,默认情况下,如果未找到bean,则它们会引发异常。所以'@必需的'是多余的。 – 2012-07-09 16:35:54

+0

那么你会如何配置一个对象从外部库只使用注释? – smp7d 2012-07-09 16:38:40

1

这是为了防止大部分开发人员的错误。

有时候开发商觉得这事会在实际上不是那里的原因过多,包括上下文:

  1. 只需忘了加上豆
  2. 相关问题(当从依赖组件自动识别)
  3. 类型/包误解

在这种情况下,它是更好后来上下文负载,而不是像一个NPE东西失败。

相关问题