我遇到了 Spring 的@Required
注解,我不确定何时使用它。
我的主要疑问是:什么可能导致未设置 Spring 依赖项从而证明使用@Required
?
我遇到了 Spring 的@Required
注解,我不确定何时使用它。
我的主要疑问是:什么可能导致未设置 Spring 依赖项从而证明使用@Required
?
首先查看参考文档中的4.9.1 @Required。恕我直言,当自动装配如此普遍使用时,此注释的使用受到限制。
在 XML 时代这非常好 - 如果您忘记在 XML 中定义但<property name="movieFinder" .../>
记得放置字段或设置器,Spring 会抛出异常。@Required
movieFinder
请注意,此注释不会使您摆脱最常见的 Spring 新手错误 -new
在容器控制之外使用运算符手动创建 bean。Spring 必须对 bean 进行后处理并仅在容器实际创建带注释的类时才抛出异常(但未注入依赖项)。
这些天你只需用@Autowired
//注释该字段@Resource
,@Inject
如果找不到bean(否则离开null
)抛出异常(没有这样的bean或类似的)。如果您可以@Required
添加注释,那么是什么阻止您用 XML 替换它@Autowired
并完全摆脱它?
话虽如此,对于某些人来说@Required
可能有很好的文档价值。
在很大程度上是为了防止开发人员错误。
有时开发人员认为某些内容会出现在实际不存在的上下文中,原因有很多,包括:
在这些情况下,最好在上下文加载时失败,而不是稍后出现 NPE。