Spring中对象是由Spring创建和管理的,本文讨论Spring如何管理这些Bean
Spring提供一个或多个Spring容器,Spring容器负责创建、装配、配置、管理对象的整个生命周期
Spring有多个容器实现,可以分为2种类型:
bean工厂:是最简单的容器,提供基本的DI支持
应用上下文:基于BeanFactory构建,提供应用框架级别的服务
由于bean工厂对于大部分程序来说太低级,所以只讨论应用上下文
使用应用上下文创建Spring容器
Spring自带多种应用上下文
AnnotationConfigApplicationContext:从一个或多个Java配置类加载Spring应用上下文
AnnotationConfigWebApplicationContext:从一个或多个Java配置类加载Spring Web应用上下文
ClassPathXmlApplicationContext:从类路径下的一个或多个XML配置文件中加载上下文定义,把应用上下文的定义文件作为类资源
FileSystemXmlapplicationcontext:从文件系统下的一个或多个XML配置文件中加载上下文定义
XmlWebApplicationContext:从Web应用下的以恶搞或多个XML配置文件加载上下文定义
创建Spring容器例子:ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("META-INF/spring/knight.xml");
通过context.getBean()方法即可获取容器内的Bean
bean生命周期
普通Java应用程序中,bean的生命周期很简单,就是通过new实例化,就可以使用了,当bean不再被使用,就会被自动回收。
而Spring中的bean的生命周期就很复杂,而且非常重要,因为有时候对这个生命周期的扩展点进行自定义