spring 学习02
2018-09-09 本文已影响9人
咸鱼佬
Spring 容器
在Spring 应用中,你的应用对象生存在Spring容器中,Spring 容器负责创建对象,装配他们,配置并且管理他们的生命周期。
Spring 容器可以归类为两种不同的类型:
- bean工厂BeanFactory,最简单的容器,提供基本的DI。
- 应用上下文ApplicationContext,基于BeanFactory构建,并提供应用框架级别服务。
使用应用上下文
- AnnotationConfigApplicationContext 从一个或多个基于Java的配置类中加载Spring应用上下文 使用
- AnnotationConfigWebApplicationContext 从一个或多个基于Java的配置类中加载Spring应用上下文
- ClassPathXmlApplicationContext 从类路径下的一个或多个XML配置文件中加载上下文定义
- FileSystemXmlapplicationcontext 从文件系统下的一个或多个XML配置文件中加载上下文定义
- XmlWebApplicationContext 从Web应用下的一个或多个XML配置文件中加载上下文定义
bean的生命周期
Spring的生命周期相对于传统的Java对象复杂多,我们可以通过Spring 提供的扩展点来自定义bean的创建过程
image
- Spring对Bean进行实例化
- Spring 将值和引用注入到Bean对应的属性中
- 如果bean实现了BeanNameAware接口,spring将调用setBeanName方法将BeanId作为参数传入
- 如果bean实现了BeanFactoryAware接口,spring将调用setBeanFactory方法将beanfactory方法传入
- 如果bean实现了ApplicationContextAware接口,spring将调用setApplicationContext方法将applicationContext传入
- 如果bean实现了BeanPostProcessor接口,spring将会调用她的postProcessBeforeInitialization 方法
- 如果bean实现了InitializingBean接口,那么就会去条用其afterPropertiesSet方法,同理,如果bean使用了init-method声明了初识方法,该方法被调用
- 如果bean实现了BeanPostProcessor接口,spring将会调用她的postProcessAfterInitialization 方法
- 此时,bean已经准备就绪,可以被应用程序使用了,它们将一直驻留在应用上下文中,直到该应用上下文被销毁
- 如果bean实现了DisposableBean接口,Spring将调用它的destroy()接口方法。同样,如果bean使用destroy-method声明了销毁方法,该方法也会被调用