Spring 容器--如何创建和加载一个 Spring 容器?
来源:互联网 发布:2016淘宝前期扶持 编辑:程序博客网 时间:2024/05/16 16:22
在基于 Spring 的应用中,你的应用对象生存于 Spring 容器中。
容器是 Spring 框架的核心。Spring 容器使用 DI 管理构成应用的组件,它会创建相互协作的组件之间的关联。
Q:Spring 容器主要负责什么?
A:Spring 容器负责创建对象,装配它们,配置它们并管理它们的整个生命周期,从生存到死亡。
Q:Spring自带了哪些容器实现?
A:第一类:bean 工厂是最简单的容器,提供基本的 DI 支持;第二类:应用上下文基于 BeanFactory 构建,并提供应用框架级别的服务。
Q:选择哪一类容器实现?
A:应用上下文。因为 bean 工厂对大多数应用来说往往太低级了,因此,应用上下文要比 bean 工厂更受欢迎。
2.1 使用应用上下文
Spring 自带了多种类型的应用上下文。
- AnnotationConfigApplicationContext:从一个或多个基于 Java 的配置类中加载 Spring 应用上下文。
- AnnotationConfigWebApplicationContext:从一个或多个基于 Java 的配置类中加载 Spring Web 应用上下文。
- ClassPathXmlApplicationContext:从类路径下的一个或多个 XML 配置文件中加载上下文定义,把应用上下文的定义文件作为类资源。
- FileSystemXmlapplicationcontext:从文件系统下的一个或多个 XML 配置文件中加载上下文定义。
- XmlWebApplicationContext:从 Web 应用下的一个或多个 XML 配置文件中加载上下文定义。
如何使用?
// 从指定的文件系统路径下,查找 knight.xml 文件ApplicationContext context = new FileSystemXmlApplicationContext("d:/knight.xml");// 使用 ClassPathXmlApplicationContext 从应用的类路径下加载应用上下文ApplicationContext context = new ClassPathXmlApplicationContext("knight.xml");// 从 Java 配置中加载应用上下文ApplicationContext context = new AnnotationConfigApplicationContext(com.springinaction.knights.config.KnightConfig.class);
2.2 bean 的生命周期
bean 装载到 Spring 应用上下文中的一个典型的生命周期过程。
下面进行详细描述:
- Spring 对 bean 进行实例化;
- Spring 将值和 bean 的引用注入到 bean 对应的属性中;
- 如果 bean 实现了 BeanNameAware 接口,Spring 将 bean 的 ID 传递给 setBeanName()方法
- 如果 bean 实现了 BeanFactoryAware 接口,Spring 将调用 setBeanFactory()方法,将 BeanFactory 容器实例传入;
- 如果 bean 实现了 ApplicationContextAware 接口,Spring 将调用 setApplicationContext()方法,将 bean 所在的应用上下文的引用传入进来;
- 如果 bean 实现了 BeanPostProcessor 接口,Spring 将调用它们的 postProcessBeforeInitialization()方法;
- 如果 bean 实现了 InitializingBean 接口,Spring 将调用它们的 afterPropertiesSet()方法。类似地,如果 bean 使用 initmethod 声明了初始化方法,该方法也会被调用;
- 如果 bean 实现了 BeanPostProcessor 接口,Spring 将调用它们的 postProcessAfterInitialization()方法;
- 此时,bean 已经准备就绪,可以被应用程序使用了,它们将一直驻留在应用上下文中,知道该应用上下文被销毁;
- 如果 bean 实现了 DisposableBean 接口,Spring 将调用它的 destory() 接口方法。同样,如果 bean 使用 destroymethod 声明了销毁方法,该方法也会被调用。
上一篇: Spring 是如何简化 Java 开发的?
下一篇:Spring 模块和 Spring Portfolio
阅读全文
1 0
- Spring 容器--如何创建和加载一个 Spring 容器?
- Spring 如何初始化一个容器
- Spring 如何初始化一个容器,( 加载xml 文件 )
- spring容器创建对象的时间和懒加载
- 如何手动控制spring容器的加载
- spring 容器加载
- Mian加载spring容器
- spring容器 创建对象
- Spring创建容器对象
- Spring容器和struts容器
- struts2容器和spring容器
- spring容器和springMVC容器
- springMVC容器和Spring容器
- springMVC容器和Spring容器
- springMVC容器和Spring容器
- 监听器如何获取Spring配置文件(加载生成Spring容器)
- 监听器如何获取Spring配置文件(加载生成Spring容器)
- WEB启动时,如何加载spring容器和struts2容器(bean的注入和url如何请求)
- 统计文件内的字符数,单词数,行数
- IO库
- HDU,4370, 0 or 1
- Linux命令之:SCP 命令
- 【北大AI公开课13讲全链接+最强干货盘点】中国AI +,群星闪耀时
- Spring 容器--如何创建和加载一个 Spring 容器?
- EL表达式获取url中的参数
- 【二叉树】BST中序遍历【99. Recover Binary Search Tree】
- 安装redis的流程
- java实现链表反转
- UVa 12461
- C#ListBox用法
- 27岁学编程
- ThinkPHP中M方法与D方法有什么区别