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 Context -
ClassPathXmlApplicationContext
通过一个或多个位于classpath里的xml配置文件来加载Spring Application Context -
FileSystemXmlApplicationContext
通过一个或多个位于文件系统中xml配置文件来加载Spring Application Context -
XmlWebApplicationContext
通过一个或多个位于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生命周期
image.png-
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
网友评论