springIOC浅析
spring IOC 是 spring的核心之一。它提供对bean的疯转和抽象,将Bean 统一封装成BeanDefinition,然后交由spring容器实现对目标对象的创建和管理,并且提供一系列的接口可以在bean创建过程中,可以对bean 进行改写。
spring的IOC大致流程如下:
spring定义的bean的流程,即:完成一个Bean的创建和初始化,需要经过以下步骤:
1,为bean设置beanName BeanNameAware # setBeanName 2,为bean设置类加载器 BeanClassLoaderAware # setBeanClassLoader 3,为bean设置beanFactory BeanFactoryAware # setBeanFactory 4,为bean设置环境 EnvironmentAware # setEnvironment 5,为bean设置@value(${KEY})的解析器 EmbeddedValueResolverAware # setEmbeddedValueResolver only applicable when running in an application context( 6-10 ) 只有在web容器中才会运行(6-10)
6,为bean设置加载资源器 ResourceLoaderAware # setResourceLoader 7,为bean设置事件通知 ApplicationEventPublisherAware # setApplicationEventPublisher 8,国际化 MessageSourceAware # setMessageSource 9,设置application ApplicationContextAwar # setApplicationContext 10,设置servletContext ServletContextAware # setServletContext 11,执行bean的初始化前置 BeanPostProcessors # postProcessBeforeInitialization 12,执行 InitializingBean的afterPropertiesSet的方法 InitializingBean # afterPropertiesSet 13,执行bean的自定义初始化方法 a custom init-method definition 14,执行bean的初始化后置 BeanPostProcessors # postProcessAfterInitialization SPRING容器关闭的时候 15,执行关闭容器前置 DestructionAwareBeanPostProcessors # postProcessBeforeDestruction 16,执行DisposableBean的destroy方法 DisposableBean # destroy 17,执行自定的destory方法 a custom destroy-method definition