好奇。
为什么bean初始化是在setter的方法之后完成的?我认为初始化最好在setter方法之前完成 - 比如在将值设置为实例成员之前进行验证以确保它是好的
为什么beanPostProcessor在具有beforeInitialization方法时会被认为是初始化后的?
答案 0 :(得分:1)
根据我的理解,setter等的调用被认为是设置bean的初始状态的动作。如果没有bean集的初始状态,则无法进行任何有意义的初始化。想想如果在setter之前完成初始化会发生什么:(假设我们使用setter注入,而不是ctor注入)bean是通过调用默认ctor创建的,然后你调用初始化,那么你可以初始化什么? bean只是一个空白对象,没有正确注入依赖项。如果您可以在这种情况下进行初始化,可以将这种初始化简单地放在您的ctor中。
对于BeanPostProcessor,我认为“post”并不是指post-initialize。在创建bean之后(即创建后),您只需进行后期处理即可。因为在两个不同的时间进行这种后处理是很常见的,这是在bean初始化之前和之后。因此对于这两种方法。
答案 1 :(得分:0)