确保Spring Bean已正确初始化

时间:2009-07-09 14:11:48

标签: spring

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

我会支持使用setter注入和XML配置的答案,因为这就是我现在正在使用的。


我试图逃避我忘记配置setter或调用init-method的情况。


在未来的项目中,我赞成skaffman's response,但我现在选择了适合我的那个。

4 个答案:

答案 0 :(得分:8)

poll正是您所寻找的。

结果如下:

  • 使用XML中的dependency-check属性:11.52%
  • 使用@Required注释(或自定义注释):21.40%
  • 使用InitializingBean和断言工具:23.87%
  • 使用init-method和断言功能:14.40%
  • 我不必,因为我使用构造函数注入所需的属性:19.34%
  • 我在商业方法中检查我的依赖项:7.41%
  • 我没有检查所需的依赖项:34.16%

答案 1 :(得分:6)

在setter方法上使用@Required注释。然后Spring将检查它们是否已经完成设置而无需您手动检查。

或者,使用@PostConstruct注释你的init方法,Spring会为你调用它们。

答案 2 :(得分:5)

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

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

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

答案 3 :(得分:2)

使用beans标记的以下属性来确保在所有bean上调用依赖项检查和init方法,但它假设您不会将您的方法称为“innit”。

<beans default-init-method="init" default-dependency-check="objects">

请参阅link