1.spring容器根据配置中的bean定义中实例化bean 2.spring使用依赖注入填充所有属性,如bean中所定义的配置 3.如果bean实现了BeanNameAware接口,则工厂通过传递bean的id来调用setBeanName() 4.如果bean实现了BeanFactoryAware接口,工厂通过传递自身的实例来调用setBeanFactory() 5.如果存在与bean关联的任何BeanPostProcessors,则调用preProcessBeforelnitialization()方法 6.如果bean指定了init方法的initmethod属性,则调用它 7.最后,如果存在与bean关联的任何BeanPostProcessors,则将调用postProcessArterInitialization()方法, 8.如果bean实现DisposableBean接口,当spring容器关闭时,会调用destory() 9.如果bean指定了destroy方法的destroymethod属性,那么将调用它
版本二; 1.实例化一个bean,也就是我们常说的new; 2.按照Spring上下文对实例化的Bean进行配置,也就是ioc注入; 3.如果这个bean已经实现了BeanNameAware接口,会调用它实现的setBeanName()方法,此处传递的就是Spring配置文件中bean的id值; 4.如果Bean已经实现了BeanFactoryAware接口,会调用它实现的setBeanFactory; 5.如果这个Bean实现了ApplicationContextAware接口,会调用setApplicationContext()方法,传入spring上下文; 6.如果这个bean关联了BeanPostProcessor接口,将会调用postProcessBeforeInitialization()方法,BeanPostProcessor经常被用作是Bean内容的更改,并且由于这个是在Bean初始化结束时调用的那个方法,也可以被用于内存技术或者缓存技术; 7.如果bean在Spring配置文件中配置了initmethod属性会自动调用其配置的初始化方法; 8.如果这个Bean关联了BeanPostProcessor接口,将会调用postPostcessArterInitialization()方法; 9.当Bean不在需要时,会经过清理阶段,如果Bean实现了DisposableBean这个接口,会调用那个实现的destroy()方法; 10.最后,如果这个Bean的spring配置中配置了destroymthod属性,会自动调用其配置的销毁方法;
|