Spring 容器

Spring 容器

  1. 创建Bean
  2. 管理Bean的生命周期
  3. 组装Bean
  4. 配置Bean

Spring容器是Spring框架的核心

Spring容器采用依赖注入的方式来管理Bean

Spring提供了两大类容器实现。

  1. 实现org.springframework.beans.factory.BeanFactory接口
  2. 实现org.springframework.context.ApplicationContext接口

使用ApplicationContext

常见的几种ApplicationContext

  1. AnnotationConfigApplicationContext
    通过一个或多个基于java的配置类来加载Spring Application Context

  2. ClassPathXmlApplicationContext
    通过一个或多个位于classpath里的xml配置文件来加载Spring Application Context

  3. FileSystemXmlApplicationContext
    通过一个或多个位于文件系统中xml配置文件来加载Spring Application Context

  4. 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
  1. Spring容器来初始化Bean

  2. Spring将value和bean依赖注入到Bean的属性中去

  3. 如果Bean实现了BeanNameAware,Spring会把Bean的id传到setBeanName()方法里去

  4. 如果Bean实现了BeanFactoryAware接口,Spring会调用setBeanFactory()方法,并把自己传到Bean Factory里

  5. 如果Bean实现了ApplicationContextAware接口,Spring会调用setApplicationContext()方法,传入对封闭应用程序的引用

  6. 如果Bean实现了BeanPostProcessor接口,Spring会调用他的postProcessBeforeInitialization()方法

  7. 如果Bean实现了InitializingBean接口,Spring会调用他的afterPropertiesSet()接口。同样的,如果这个Bean在声明的时候有一个init-method属性,那么这个方法就会被调用(主要是在xml配置文件里的)

  8. 如果Bean实现了BeanPostProcessor接口,Spring会调用他的AfterInitialization()方法

  9. 在这个阶段,Bean在容器中,直到容器被销毁

  10. 如果Bean实现了DisposableBean接口,Spring会调用他的destroy()。同样的,在xml中生命的时候可以指定destroy-method

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容