//执行BeanPostProcessor.postProcessBeforeInitialization()
wrappedBean = applyBeanPostProcessorsBeforeInitialization(wrappedBean, beanName);//执行init方法
invokeInitMethods(beanName, wrappedBean, mbd);//执行BeanPostProcessor.postProcessAfterInitialization()
wrappedBean = applyBeanPostProcessorsAfterInitialization(wrappedBean, beanName);
说过applyBeanPostProcessorsBeforeInitialization之后,下面继续看invokeInitMethods(beanName, wrappedBean, mbd);
protected void invokeInitMethods(String beanName, final Object bean, RootBeanDefinition mbd)
throws Throwable {
boolean isInitializingBean = (bean instanceof InitializingBean);、
//从这块代码中,执行init方法也可以让类实现InitializingBean接口,实现其afterPropertiesSet方
if (isInitializingBean && (mbd == null || !mbd.isExternallyManagedInitMethod("afterProper