7 -- Spring的基本用法 -- 4...
Posted limeOracle
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了7 -- Spring的基本用法 -- 4...相关的知识,希望对你有一定的参考价值。
7.4 使用 Spring 容器
Spring 有两个核心接口:BeanFactory 和 ApplicationContext,其中ApplicationContext 是 BeanFactory 的子接口。它们都可代表 Spring 容器,Spring 容器是生成 Bean 实例的工厂,并管理容器中的Bean。
Java 程序面向接口编程,无须关心 Bean 实例的实现类;但 Spring 容器负责创建 Bean 实例,因此必须精确知道每个 Bean 实例的实现类,故Spring 配置文件必须指定 Bean 实例的实现类。
7.4.1 Spring 容器
Spring 容器最基本的接口就是BeanFactory。BeanFactory 负责配置、创建、管理Bean,它有一个子接口:ApplicationContext,因此也被称为Spring上下文。Spring 容器还负责管理Bean 与 Bean 之间的依赖关系。
BeanFactory 接口包含如下几个基本方法。
boolean containsBean(String name):判断Spring容器是否包含id为name 的Bean 实例。
<T> T getBean(Class<T> requiredType):获取Spring容器中属于requiredType类型的、唯一的Bean实例。
Object getBean(String name):返回容器id为name的Bean实例。
<T> T getBean(String name,Class requiredType):返回容器中id为name,并且类型为requiredType的Bean。
Class<?> getType(String name):返回容器中id为name的Bean实例的类型。
BeanFactory 常用的实现类是DefaultListableBeanFactory。
ApplicationContext 常用的实现类是FileSystemXmlApplicationContext、ClassPathXmlApplicationContext 和 AnnotationConfigApplicationContext。
如果在Web应用中使用Spring容器,则通常有XmlWebApplicationContext、AnnotationConfigWebApplicationContext两个实现类。
创建BeanFactory实例时,应该提供XML配置文件作为参数,XML配置文件通常使用Resource对象传入。
Resource接口是Spring提供的资源访问接口,通过使用该接口,Spring能以简单、透明的方式访问磁盘、类路径以及网络上的资源。
大部分Java EE应用,可在启动Web应用时自动加载ApplicationContext实例,接收Spring管理的Bean无须知道ApplicationContext的存在,一样可以利用ApplicationContext的管理。
对于独立的应用程序,可通过如下方法实例化BeanFactory。
// 搜索类加载路径下的beans.xml 文件创建Resource对象 Resource isr = new ClassPathResource("beans.xml"); // 创建默认的BeanFactory容器 DefaultListableBeanFactory beanFactory = new DefaultListableBeanFactory(); // 让默认的BeanFactory容器加载isr对应的XML配置文件 new XmlBeanDefinitionReader(beanFactory).loadBeanDefinitions(isr);
或者采用如下代码来创建BeanFactory:
// 搜索文件系统的当前路径下的beans.xml 文件创建Resource对象 Resource isr = new FileSystemResource("beans.xml"); // 创建默认的BeanFactory容器 DefaultListableBeanFactory beanFactory = new DefaultListableBeanFactory(); // 让默认的BeanFactory容器加载isr对应的XML配置文件。 new XmlBeanDefinitionReader(beanFactory).loadBeanDefinitions(isr);
如果应用需要加载多个配置文件来创建Spring容器,则应该采用BeanFactory的子接口ApplicationContext来创建BeanFactory的实例。
ApplicationContext接口包含FileSystemXmlApplicationContext和ClassPathXmlApplicationContext两个常用的实现类。
如果需要同时加载多个XML配置文件来创建Spring容器,则可以采用如下方式:
// 以类加载路径下的Beans.xml、service.xml文件创建ApplicationContext ApplicationContext ctx = new ClassPathXmlApplicationContext("beans.xml","service.xml");
当然也可支持从文件系统的相对路径或绝对路径来搜索配置文件,只要使用FileSystemXmlApplicationContext即可。
// 以类加载路径下的Beans.xml、service.xml文件创建ApplicationContext ApplicationContext ctx = new FileSystemXmlApplicationContext("beans.xml","service.xml");
7.4.2 使用ApplicationContext
大部分时候使用ApplicationContext实例作为容器,因此也把Spring容器称为Spring上下文。ApplicationContext是BeanFactory接口的子接口,它增强了BeanFactory的功能。
ApplicationContext允许以声明式方式操作容器,无须手动创建它。可利用ContextLoader的支持类,在Web应用启动时自动创建ApplicationContext。当然也可采用编程方式创建ApplicationContext。
除了提供BeanFactory所支持的全部功能外,ApplicationContext还有如下额外的功能。
ApplicationContext默认会预初始化所有singleton Bean,也可通过配置取消预初始化。
ApplicationContext继承MessageSource接口,因此提供国际化支持。
资源访问,比如访问URL文件。
事件机制。
同时加载多个配置文件。
以声明式方式启动并创建Spring容器。
以上是关于7 -- Spring的基本用法 -- 4...的主要内容,如果未能解决你的问题,请参考以下文章