Spring 容器
- 创建Bean
- 管理Bean的生命周期
- 组装Bean
- 配置Bean
Spring容器是Spring框架的核心
Spring容器采用依赖注入的方式来管理Bean
Spring提供了两大类容器实现。
- 实现org.springframework.beans.factory.BeanFactory接口
- 实现org.springframework.context.ApplicationContext接口
使用ApplicationContext
常见的几种ApplicationContext
AnnotationConfigApplicationContext
通过一个或多个基于java的配置类来加载Spring Application ContextClassPathXmlApplicationContext
通过一个或多个位于classpath里的xml配置文件来加载Spring Application ContextFileSystemXmlApplicationContext
通过一个或多个位于文件系统中xml配置文件来加载Spring Application ContextXmlWebApplicationContext
通过一个或多个位于web应用中的xml配置文件来加载Spring Application Context
使用方法:
ApplicationContext context = new FileSystemXmlApplicationContext("c:/knight.xml");
ApplicationContext context = new
ClassPathXmlApplicationContext("knight.xml");
ApplicationContext context = new AnnotationConfigApplicationContext(
com.springinaction.knights.config.KnightConfig.class);
通过是用context.getBean()来获取具体的Bean
Bean生命周期
Spring容器来初始化Bean
Spring将value和bean依赖注入到Bean的属性中去
如果Bean实现了BeanNameAware,Spring会把Bean的id传到setBeanName()方法里去
如果Bean实现了BeanFactoryAware接口,Spring会调用setBeanFactory()方法,并把自己传到Bean Factory里
如果Bean实现了ApplicationContextAware接口,Spring会调用setApplicationContext()方法,传入对封闭应用程序的引用
如果Bean实现了BeanPostProcessor接口,Spring会调用他的postProcessBeforeInitialization()方法
如果Bean实现了InitializingBean接口,Spring会调用他的afterPropertiesSet()接口。同样的,如果这个Bean在声明的时候有一个init-method属性,那么这个方法就会被调用(主要是在xml配置文件里的)
如果Bean实现了BeanPostProcessor接口,Spring会调用他的AfterInitialization()方法
在这个阶段,Bean在容器中,直到容器被销毁
如果Bean实现了DisposableBean接口,Spring会调用他的destroy()。同样的,在xml中生命的时候可以指定destroy-method