Spring(2)--使用Spring容器

Spring有两个核心接口:BeanFactory和ApplicationContext,其中ApplicationContext是BeanFactory的子接口。它们都可代表Spring容器,Spring是生成Bean实例的工厂,并管理容器中的Bean。在基于Spring的JavaEE应用中,所有的组件都被当成Bean处理,包括数据源、Hibernate的SessionFactory、事务管理器等。
Java程序面向接口编程,无须关心Bean实例的实现类:但Spring容器负责创建Bean实例,因此必须精确知道每个Bean实例的实现类,因此Spring配置文件必须指定Bean实例的实现类。

一、Spring容器

Spring容器最基本的接口就是BeanFactory。BeanFactory负责配置、创建、管理Bean,它有一个子接口:ApplicationContext,因此也被称为Spring上下文。Spring容器还负责Bean与Bean之间的依赖关系。
BeanFactory接口包含如下几个基本方法。
(1)boolean containsBean(String name):判断Spring容器是否包含id为name的Bean实例。
(2) T getBean(Class requiredType):获取Spring容器中属于requiredType类型的、唯一的Bean实例。
(3)Object getBean(String name):返回容器id为name的Bean实例。
(4) T getBean(String name,Class requiredType):返回容器中id为name,并且类型为requiredType的Bean。
(5)Class <> getType(String name) : 返回容器中id为name的Bean实例的类型。

调用者只需使用getBean()方法即可获得指定Bean的引用,无须关心Bean的实例化过程。Bean实例的创建、初始化以及依赖关系的注入都由Spring容器来完成。

ApplicationContext是BeanFactory的子接口,对于大部分JavaEE应用来说,使用它作为Spring容器更方便。其常用的实现类是:FileSystemXmlApplicationContext、ClassPathXmlApplicationContext和AnnotationConfigApplicationContext。如果在Web应用中使用Spring容器,则通常有XmlWebApplicationContext、AnnotationConfigWebApplicationContext两个实现类。
大部分JavaEE应用,可在启动Web应用时自动加载ApplicationContext实例,接受Spring管理的Bean无须知道ApplicationContext的存在,一样可以利用ApplicationContext的管理。

对于独立的应用程序,了通过如下方法实例化BeanFactory

//搜索类加载路径下的beans.xml文件创建Resource对象
Resource isr=new ClassPathResourse("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");
DefaultListableBeanFactory beanFactory=new DefaultListableBeanFactory();
//让默认的BeanFactory容器加载isr对应的xml文件
new XmlBeanDefinitionReader(BeanFactory).loadBeanDefinitions(isr);

如果需要同时加载多个xml配置文件来创建Spring容器,则可以采用以下方式:

ApplicationContext appContext=new ClassPathXmlApplicationContext("beans.xml","service.xml");

同样的支持从文件系统进行加载

ApplicationContext appContext appContext=new FileSystemXmlApplicationContext("beans.xml","service.xml");

二、使用ApplicationContext

ApplicationContext包括BeanFactory的全部功能,并且自身还有额外的功能;

当系统创建ApplicationContext容器时,默认会预初始化所有的singleton Bean。也就是说,当ApplicationContext容器初始化完成后,容器会自动初始化所有的singleton Bean,包括调用构造器创建该Bean的实例,并根据

三、ApplicationContext的事件机制

ApplicationContext的事件机制是观察者设计模式的实现,通过ApplicationEvent类和ApplicationListener接口,可以实现ApplicationCOntext的事件处理。如果容器中有一个ApplicationListener Bean,每当ApplicationContext发布ApplicationEvent时,ApplicationListener Bean将自动触发。
Spring的事件框架中有如下两个重要成员。
ApplicationEvent:容器事件,必须由ApplicationContext发布。
ApplicationListener:监听器,可由容器中的任何监听器Bean担任。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值