Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
确保SpringBean已正确初始化_Spring - Fatal编程技术网

确保SpringBean已正确初始化

确保SpringBean已正确初始化,spring,Spring,确保Springbean设置了所有属性并调用了init方法的最简洁的方法是什么 我更喜欢使用setter注入和XML配置的答案,因为这正是我现在使用的 我试图避免忘记配置setter或调用init方法的情况 在未来的项目中,我会更喜欢,但我现在选择了一个适合我的项目。在setter方法上使用@Required注释。Spring将检查它们是否都已设置,而无需手动检查 或者,用@PostConstruct注释init方法,Spring将为您调用它们。您可以将依赖项检查属性添加到bean定义中,以

确保Springbean设置了所有属性并调用了init方法的最简洁的方法是什么

我更喜欢使用setter注入和XML配置的答案,因为这正是我现在使用的


我试图避免忘记配置setter或调用
init方法的情况



在未来的项目中,我会更喜欢,但我现在选择了一个适合我的项目。

在setter方法上使用@Required注释。Spring将检查它们是否都已设置,而无需手动检查


或者,用@PostConstruct注释init方法,Spring将为您调用它们。

您可以将依赖项检查属性添加到bean定义中,以确保所有对象/原语/两者都已设置

<bean id="myBean" class="com.foo.MyBean" dependency-check="objects"/>

Skaffman的回答提供了更多的控制,但确实引入了对Spring的编译时依赖,这可能是/可能不是您想要的。

这正是您想要的

结果如下:

  • 通过使用XML中的依赖项检查属性:11.52%
  • 通过使用@Required注释(或自定义注释):21.40%
  • 通过使用InitializingBean和断言工具:23.87%
  • 通过使用init方法和断言工具:14.40%
  • 我不必这样做,因为我对所需的属性使用构造函数注入:19.34%
  • 我在我的业务方法中检查我的依赖性:7.41%
  • 我不检查所需的依赖关系:34.16%

使用bean标记的以下属性来确保对所有bean进行依赖性检查和init方法调用,但它假定您不调用方法“innit”



请参见

“对象”意味着Spring将检查是否只设置了对象的属性(而不是原语)。嗯,我不知道您可以这样做,这看起来像是Spring 1.2的核心内容:)此方法还要求您记住在每个bean定义中添加依赖项检查属性,所以它仍然容易被遗忘。@Adamski:还有默认的依赖项检查和默认的init方法/默认的destroy方法。你可能想把这些都包括在你的答案中。。。虽然我很惊讶最高的投票结果是“我不检查所需的依赖项”,但我也不检查,但我想检查。这就是我问这个问题的原因。这也是一个相当古老的调查,所以Spring开发人员现在会更加注意@Required之类的东西。Spring在给你一个bean之前不会设置所有依赖项吗?@fastcodejava如果有人没有正确/完整地设置Spring配置,就不会。容易犯错误。。。很高兴在部署时发现,而不是当应用程序在用户面前爆炸时:)
<beans default-init-method="init" default-dependency-check="objects">