zoukankan      html  css  js  c++  java
  • 发散问题——Spring容器及加载

    一、前言

    发散问题系列,是围绕日常工作,发散思考,提取问题,并寻求答案的一个系列。总的来说,就是将遇到的问题发散来提出更多的问题,并通过解决发散问题,从而对问题有更深入的了解,对知识有更深刻的记忆,帮助自身的提高。欢迎大家将问题继续发散,或者将已有问题更深入的阐述,以达到共同进步的目的。

       

    二、背景描述

    有这样一个几个相关的工程:

    Shell层打包成war包后,会将其他几个项目的jar包引用到WEB_INF\lib目录下

    这些工程的结构大致是这样子的:

       

    三、问题提出

    如果在shell项目的web.xml中,有设置如下:

       <context-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath*:/META-INF/spring/*.xml</param-value>
        </context-param>
        <listener>
            <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
        </listener>

    那么,

    1Spring的容器是什么,用来干什么?

    答:Spring 容器是 Spring 框架的核心。容器将创建对象,把它们连接在一起,配置它们,并管理他们的整个生命周期从创建到销毁。Spring 容器使用依赖注入(DI)来管理组成一个应用程序的组件。这些对象被称为 Spring Beans。通过阅读配置元数据提供的指令,容器知道对哪些对象进行实例化,配置和组装。配置元数据可以通过 XMLJava 注释或 Java 代码来表示。

       

    2)应用会加载哪些xml配置文件到spring中(本项目的xml、还是包括其他项目的xml,还会包括jar包的xml吗?)

    答:这里要留意到"classpath*"这个符号,web.xmlclasspathclasspath*有以下区别:

    classpath:只会到你的class路径中查找找文件;

    classpath*:不仅包含class路径,还包括jar文件中(class路径)进行查找

    所以,这样子配置的话,会搜索本项目xml、其他项目xml以及jar包中的xml。只要是位于/META-INF/spring/目录下的xml,都会作为Spring容器的配置文件加载到一起。

       

    3web.xml中指示读了一堆xml,那这些配置是作为同一个容器,还是分开多个容器?

    答:作为同一个容器来读取,也就是说,所有提到的xml里面的bean都会装载到一个容器上来。

       

    4)这些xml的加载顺序是怎么样的?

    答:经试验,顺序不确定,所以建议定义的每个xml有自己的工作范围,xmlxml之间不要有太多的关系,例如xml之间的bean互相引用,这样子可能会造成加载时的问题。

  • 相关阅读:
    [APM] OneAPM 云监控部署与试用体验
    Elastic Stack 安装
    xBIM 综合使用案例与 ASP.NET MVC 集成(一)
    JQuery DataTables Selected Row
    力导向图Demo
    WPF ViewModelLocator
    Syncfusion SfDataGrid 导出Excel
    HTML Table to Json
    .net core 2.0 虚拟目录下载 Android Apk 等文件
    在BootStrap的modal中使用Select2
  • 原文地址:https://www.cnblogs.com/huangzijian/p/6701334.html
Copyright © 2011-2022 走看看