码迷,mamicode.com
首页 > 编程语言 > 详细

7 -- Spring的基本用法 -- 4...

时间:2016-12-31 11:27:35      阅读:192      评论:0      收藏:0      [点我收藏+]

标签:声明式   实现   ati   独立   loader   url   web应用   app   实例化   

    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...

标签:声明式   实现   ati   独立   loader   url   web应用   app   实例化   

原文地址:http://www.cnblogs.com/ClassNotFoundException/p/6238851.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!