美文网首页
1.ApplicationContext接口

1.ApplicationContext接口

作者: 丹之 | 来源:发表于2018-12-01 15:28 被阅读56次

在使用Spring的时候,我们经常需要先得到一个ApplicationContext对象,然后从该对象中获取我们配置的Bean对象。ApplicationContext隶属于org.springframework.context,是SpringFramework中Bean的管理者,为SpringFramework的诸多功能提供支撑作用。

下图是Spring-4.3.3.RELEASE版本中ApplicationContext相关的UML类视图(浅绿色的为接口,浅黄色的为类):


BeanFactory系列接口:

public interface BeanFactory

BeanFactory 是 Spring 管理 Bean 的最顶层接口,是一个 Bean 容器, 管理一系列的 bean,每一个 bean 使用一个String 类型的 name(或称之为id) 来唯一确定,这些 Bean 可以是 prototype 的或者 singleton的 。Spring 提倡使用依赖注入(Dependency Injection) 的方式装配 Bean。BeanFactory从“configuration source”加载Bean的定义,configuration source 可以是xml文件或者properties文件甚至是数据库。

public interface HierarchicalBeanFactory extends BeanFactory

BeanFactory的子接口HierarchicalBeanFactory是一个具有层级关系的Bean 工厂,拥有属性parentBeanFactory。当获取 Bean对象时,如果当前BeanFactory中不存在对应的bean,则会访问其直接 parentBeanFactory 以尝试获取bean 对象。此外,还可以在当前的 BeanFactory 中 override 父级BeanFactory的同名bean。

public interface ListableBeanFactory extends BeanFactory

ListableBeanFactory 继承了BeanFactory,实现了枚举方法可以列举出当前BeanFactory中所有的bean对象而不必根据name一个一个的获取。 如果 ListableBeanFactory 对象还是一个HierarchicalBeanFactory则getBeanDefinitionNames()方法只会返回当前BeanFactory中的Bean对象而不会去父级BeanFactory中查询。

ApplicationContext接口的功能说明:

public interface ApplicationContext extends EnvironmentCapable, ListableBeanFactory, HierarchicalBeanFactory, MessageSource, ApplicationEventPublisher, ResourcePatternResolver

ApplicationContext接口继承众多接口,集众多接口功能与一身,为Spring的运行提供基本的功能支撑。根据程序设计的“单一职责原则”,其实每个较顶层接口都是“单一职责的”,只提供某一方面的功能,而ApplicationContext接口继承了众多接口,相当于拥有了众多接口的功能,下面看看它的主要功能:

  • 首先,它是个BeanFactory,可以管理、装配bean,可以有父级BeanFactory实现Bean的层级管理(具体到这里来说它可以有父级的ApplicationContext,因为ApplicationContext本身就是一个BeanFactory。这在web项目中很有用,可以使每个Servlet具有其独立的context, 所有Servlet共享一个父级的context),它还是Listable的,可以枚举出所管理的bean对象。
  • 其次,它是一个ResourceLoader,可以加载资源文件;
  • 再次,它可以管理一些Message实现国际化等功能;
  • 还有,它可以发布事件给注册的Listener,实现监听机制。

ApplicationContext两个比较常用的实现类:

  • ClassPathXmlApplicationContext: 使用类路径方式初始化ioc容器(推荐使用)
  • FileSystemApplicationContext: 使用文件系统的方式初始化ioc容器

1) 演示ClassPathXmlApplicationContext:

public class Demo2 {
    
    @Test
    public void test1(){
        /**
         * 方式一:类路径方式加载,默认在类路径的根目录下(也就是src目录下)
         */
        ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
        CustomerDao customerDao = (CustomerDao)ac.getBean("customerDao"); 
        System.out.println(customerDao);
    }
}

2)演示FileSystemApplicationContext:

绝对路径:
@Test
    public void test2(){
        /**
         * 方式二:使用文件系统的方式初始化ioc容器
         */
        //2.1 绝对路径
        ApplicationContext ac = new FileSystemXmlApplicationContext("E:\\workspaces\\yiidian_spring\\02.spring-ioc-helloworld\\src\\applicationContext.xml");
        CustomerDao customerDao = (CustomerDao)ac.getBean("customerDao"); 
        System.out.println(customerDao);
    }

相对路径:

@Test
    public void test3(){
        /**
         * 方式二:使用文件系统的方式初始化ioc容器
         */
        //2.2 相对路径
        ApplicationContext ac = new FileSystemXmlApplicationContext("./src/applicationContext.xml");
        CustomerDao customerDao = (CustomerDao)ac.getBean("customerDao"); 
        System.out.println(customerDao);
    }

http://www.yiidian.com/spring/application-context.html

相关文章

  • 1.ApplicationContext接口

    在使用Spring的时候,我们经常需要先得到一个ApplicationContext对象,然后从该对象中获取我们配...

  • BeanFactory和ApplicationContext区别

    1.ApplicationContext 2.BeanFactory 3.总结

  • [Spring]浅谈ApplicationContext

    1.ApplicationContext概述 Spring对ApplicationContext的解释为: Bea...

  • 使用SpringEvent业务解耦

    说明 用于系统业务之间解耦。需要使用的知识点:1.ApplicationContext,2.Application...

  • 接口接口接口

    发现很多朋友对于接口都很纠结,阐述一下个人对接口的理解。 接口分为很多种类型,程序语言内部接口 移动端和服务端接口...

  • Android常用接口

    不知名接口 头条接口: 科技接口: 财经接口: 军事接口: 体育接口: 房产接口: 足球接口: 娱乐接口: 电影接...

  • 第十八天 微信微博天气接口

    分享接口 微信接口 微博接口 天气接口 mob接口

  • 接口测试概述

    接口(interface)的概念 常见接口名词 接口测试: 接口测试目的: 接口测试的重要性: 接口测试流程 接口...

  • 接口测试

    接口测试概念: 接口:接口是为了提供一种服务 所有的接口统称为API,接口分为内部接口和外部接口 外部接口:测试被...

  • 接口

    接口 接口类型 空接口 接口嵌套 接口断言 type关键字

网友评论

      本文标题:1.ApplicationContext接口

      本文链接:https://www.haomeiwen.com/subject/nqcrcqtx.html