Spring - 为什么在setter方法之后调用初始化

时间:2013-03-07 02:04:16

标签: spring

好奇。

  1. 为什么bean初始化是在setter的方法之后完成的?我认为初始化最好在setter方法之前完成 - 比如在将值设置为实例成员之前进行验证以确保它是好的

  2. 为什么beanPostProcessor在具有beforeInitialization方法时会被认为是初始化后的?

2 个答案:

答案 0 :(得分:1)

  1. 根据我的理解,setter等的调用被认为是设置bean的初始状态的动作。如果没有bean集的初始状态,则无法进行任何有意义的初始化。想想如果在setter之前完成初始化会发生什么:(假设我们使用setter注入,而不是ctor注入)bean是通过调用默认ctor创建的,然后你调用初始化,那么你可以初始化什么? bean只是一个空白对象,没有正确注入依赖项。如果您可以在这种情况下进行初始化,可以将这种初始化简单地放在您的ctor中。

  2. 对于BeanPostProcessor,我认为“post”并不是指post-initialize。在创建bean之后(即创建后),您只需进行后期处理即可。因为在两个不同的时间进行这种后处理是很常见的,这是在bean初始化之前和之后。因此对于这两种方法。

答案 1 :(得分:0)

  1. 因此初始化可以使用bean上设置的值。
  2. 因为它是帖子 -processor。