• spring容器之ApplicationContext


    一、ApplicationContext:是spring继BeanFactory之外的另一个核心接口或容器,允许容器通过应用程序上下文环境创建、获取、管理bean。为应用程序提供配置的中央接口。在应用程序运行时这是只读的,但如果实现支持这一点,则可以重新加载。

    一个ApplicationContext提供:

    •访问应用程序组件的Bean工厂方法。从org.springframework.beans.factory.ListableBeanFactory继承。

    •以通用方式加载文件资源的能力。继承自org.springframe .core.io。ResourceLoader接口。---beanXML

    •向注册侦听器发布事件的能力。继承自ApplicationEventPublisher接口。

    •解析消息的能力,支持国际化。继承自MessageSource接口。

    •从父上下文继承。后代上下文中的定义总是优先级。例如,这意味着单个父上下文可以被整个web应用程序使用,而每个servlet都有自己独立于任何其他servlet的子上下文。

    其接口主要子类(接口)包括:ConfigurableApplicationContext、WebApplicationContext

     

    ConfigurableApplicationContext:该接口提供了根据配置创建、获取bean的一些方法,其中主要常用的实现包括:ClassPathXmlApplicationContext、FileSystemXmlApplicationContext等。提供了通过各种途径去加载实例化bean的手段。

     

    AnnotationConfigWebApplicationContext:WebApplicationContext实现,它接受带注释的类作为输入—特别是@Configuration-annotated类,但也接受普通的@Component类和使用javax兼容JSR-330的类。注入注解。允许逐个注册类(指定类名作为配置位置)以及类路径扫描(指定基本包作为配置位置)。对于多个@Configuration类,后面的@Bean定义将覆盖前面加载的文件中定义的类。可以利用这一点,通过额外的配置类故意覆盖某些bean定义。提供了注册注解类和扫描注解类等操作:

       public void register(Class<?>... annotatedClasses) {---注册一个或多个要处理的带注释的类。
            Assert.notEmpty(annotatedClasses, "At least one annotated class must be specified");
            this.annotatedClasses.addAll(Arrays.asList(annotatedClasses));
        }
    
        public void scan(String... basePackages) {---在指定的包中扫描类
            Assert.notEmpty(basePackages, "At least one base package must be specified");
            this.basePackages.addAll(Arrays.asList(basePackages));
        }

    核心方法:loadBeanDefinitions

    XmlWebApplicationContext:WebApplicationContext实现,它从XML文档获取配置,默认情况下,配置将取自“/WEB-INF/applicationContext”。xml" for the root context, and "/WEB-INF/test-servlet。对于具有名称空间“test-servlet”的上下文(类似于对于具有servlet-name“test”的DispatcherServlet实例)。

    ClassPathXmlApplicationContext:独立的XML应用程序上下文,从类路径中获取上下文定义文件,将普通路径解释为包含包路径的类路径资源名(例如,“mypackage / myresource.txt”)。适用于测试工具以及嵌入在jar中的应用程序上下文。配置位置的默认值可以通过getConfigLocations重写,配置位置可以表示具体的文件,比如“/myfiles/context”。xml“或ant样式的模式,比如”/myfiles/*-context。参见org.springframework.util。模式细节的AntPathMatcher javadoc)。注意:对于多个配置位置,后面的bean定义将覆盖前面加载的文件中定义的配置位置。可以利用这一点,通过额外的XML文件故意覆盖某些bean定义。提供了诸多加载xml的操作:

     

    FileSystemXmlApplicationContext:

    独立的XML应用程序上下文,从文件系统或url获取上下文定义文件,将普通路径解释为相对的文件系统位置(例如,“mydir / myfile.txt”)。适用于测试线束以及独立环境。注意:普通路径总是被解释为相对于当前VM工作目录,即使它们以斜杠开头。(这与Servlet容器中的语义一致。)使用显式的“file:”前缀强制执行绝对文件路径。配置位置的默认值可以通过getConfigLocations重写,配置位置可以表示具体的文件,比如“/myfiles/context”。xml“或ant样式的模式,比如”/myfiles/*-context。参见org.springframework.util。模式细节的AntPathMatcher javadoc)。注意:对于多个配置位置,后面的bean定义将覆盖前面加载的文件中定义的配置位置。可以利用这一点,通过额外的XML文件故意覆盖某些bean定义。这是一个简单的一站式应用程序上下文。考虑将GenericApplicationContext类与org.springframework.bean .factory.xml结合使用。用于更灵活的上下文

     

    ClassPathXmlApplicationContext FileSystemXmlApplicationContext :一个是从类路径获取配置文件并进一步实例化bean,一个是从文件系统或url加载文件并进一步实例化bean。

    ApplicationContext提供:

    •访问应用程序组件的Bean工厂方法。从org.springframework.beans.factory.ListableBeanFactory继承。

    •以通用方式加载文件资源的能力。继承自org.springframe .core.io。ResourceLoader接口。

    •向注册侦听器发布事件的能力。继承自ApplicationEventPublisher接口。

    •解析消息的能力,支持国际化。继承自MessageSource接口。

    •从父上下文继承。后代上下文中的定义总是优先级。例如,这意味着单个父上下文可以被整个web应

  • 相关阅读:
    解决 找不到方法:“Void System.Web.UI.HtmlControls.HtmlForm.set_Action(System.String)”。
    如何衡量CMS系统的好坏
    创业与团队管理的一些观点
    Windows下Memcached的安装与配置
    SQL Server 2005备份维护计划
    写给四岁的领智
    python在接口测试的实际应用
    篇2 安卓app自动化测试初识python调用appium
    篇5 python自动化测试应用Selenium环境篇
    篇1 安卓app自动化测试appium环境篇
  • 原文地址:https://www.cnblogs.com/henuliulei/p/15913635.html
Copyright © 2020-2023  润新知