大家好,又见面了,我是你们的朋友全栈君。
1. Spring对bean进行实例化,即相当于New Bean();
2. Spring将bean的属性值(如果有)和bean的引用(如果有)注入到bean对应的属性中;
3. 如果bean实现了BeanNameAware接口(Spring不推荐使用), 则Spring将bean的id传递给setBeanName(String name)方法,以方便在bean factory中知道bean的name;
4. 如果bean实现了BeanFactoryAware接口, Spring将调用setBeanFactory(BeanFactory beanFactory)方法, 将BeanFactory容器实例传入,以便bean能够通过BeanFactory容器中的相关beans;
5. 如果bean实现了ApplicationContextAware接口(Spring 推荐), Spring将调用setApplicationContext(ApplicationContext applicationContext)方法, 将bean所在的applicationContext的引用传入进来,以便bean能够通过applicationContext中的其他beans;
6. 如果bean实现了BeanPostProcessor接口, Spring将调用它们的postProcessBeforeInitialization(Object bean, String beanName)方法;
7. 如果bean实现了InitializingBean接口, Spring将调用它们的afterPropertiesSet()方法。 类似地, 如果bean使用init-method声明了初始化方法, 该方法也会被调用;
8. 如果bean实现了BeanPostProcessor接口, Spring将调用它们的postProcessAfterInitialization(Object bean, String beanName)方法;
9. 经过以上操作, bean一切已经准备就绪, 可以被应用程序使用了, bean将一直驻留在应用上下文中,直到该应用上下文(即applicationContext)被销毁;
10. 如果bean实现了DisposableBean接口, Spring将调用它的destroy()接口方法。 同样, 如果bean使用destroy-method声明了销毁方法, 该方法也会被调用。
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/149542.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...