Spring的核心容器

 

Spring框架的主要功能是经过其核心容器来实现的。Spring提供了2种核心容器:BeanFactory、ApplicationContext。app

 

 

BeanFactory

BeanFactory是一个管理Bean的工厂,主要负责初始化各类Bean,并调用它们的声明周期方法。框架

BeanFactory由BeanFactory接口定义。BeanFactory接口的经常使用实现类:XmlBeanFactory类。ui

建立一个BeanFactory的实例:spa

1   Resource resource=new FileSystemResource("D:/test/src/applicationContext.xml");
2    BeanFactory beanFactory=new XmlBeanFactory(resource);

建立一个Spring容器,并使用xml配置文件来初始化容器。参数是Resource类型,指定容器的配置文件。code

由于要使用绝对路径,不方便程序移植,不推荐使用。xml

 

 

 

ApplicationContext

ApplicationContext是BeanFactory的子接口,被称为应用上下文。除了有BeanFactory的所有功能,还提供了对国际化、资源访问、事件传播等的支持,常常用这个。blog

ApplicationContext接口有2个经常使用的实现类:接口

  • ClassPathXmlApplicationContext类    //使用相对路径,最经常使用,推荐
  • FileSystemXmlApplicationContext类    //使用绝对路径,不推荐

建立示例:事件

1   ApplicationContext applicationContext=new ClassPathXmlApplicationContext("applicationContext.xml");
1   FileSystemXmlApplicationContext applicationContext=new FileSystemXmlApplicationContext("D:/test/src/applicationContext.xml");

 

 

 

BeanFactory和ApplicationContext都是经过xml配置文件加载Bean的,两者的主要区别:资源

  • BeanFactory:若是Bean的某个属性没有注入,使用getBean()方法时会抛出异常
  • ApplicationContext:在建立容器时会自检,检查Bean所依赖的属性是否注入。

通常都是优先选择使用ApplicationContext,资源较少时才考虑使用BeanFactory。

 

 

 

建立Spring容器后,就能够获取容器中的Bean了:

  • Object  getBean(String  name)    //经过Bean的id或者name来获取Bean,返回值是Object类型,须要强制类型转换
  • <T>  getBean(String name, Class<T>  requiredType)   //第二个参数指定该Bean的类,这样返回值就是该类型的,没必要转换类型。
相关文章
相关标签/搜索