首页 > 其他分享 >【Spring | 应用上下文】

【Spring | 应用上下文】

时间:2023-08-15 17:37:01浏览次数:80  
标签:xml Spring 路径 classpath 应用 通配符 上下文 com

(应用上下文)

应用上下文和资源路径


  本节介绍如何使用资源创建应用程序上下文,包括使用 XML 的快捷方式、如何使用通配符以及其他详细信息。

构造应用上下文


  应用上下文构造函数(针对特定的应用上下文类型)通常将字符串或字符串数组作为资源的位置路径,例如构成上下文定义的 XML 文件。 示例如下


ApplicationContext ctx = new ClassPathXmlApplicationContext("conf/appContext.xml");
ApplicationContext ctx = new FileSystemXmlApplicationContext("conf/appContext.xml");
ApplicationContext ctx = new FileSystemXmlApplicationContext("classpath:conf/appContext.xml");
ApplicationContext ctx = new ClassPathXmlApplicationContext(new String[] {"services.xml", "daos.xml"}, MessengerService.class);

构造ClassPathXmlApplicationContext实例 — 快捷方式


  ClassPathXmlApplicationContext公开了许多构造函数以实现方便的实例化。基本思想是,您可以只提供一个字符串数组,该数组只包含XML文件本身的文件名(没有前导路径信息),还可以提供一个类。然后,ClassPathXmlApplicationContext从提供的类派生路径信息。 示例如下:

com/
  example/
    services.xml
    repositories.xml
    MessengerService.class

使用通配符


  ApplicationContext 构造器的中的资源路径可以是单一的路径(即一对一地映射到目标资源);也可以是通配符形式——可包含 classpath*:也可以是前缀或 ant 风格的正则表达式(使用 spring 的 PathMatcher 来匹配)。

  这种机制的一个用途是当您需要进行组件样式的应用程序组装时。所有组件都可以将上下文定义片段发布到已知的位置路径,并且,当使用以classpath*:为前缀的相同路径创建最终应用程序上下文时,所有组件片段都会自动拾取。

  这种通配符是特定于应用程序上下文构造函数中资源路径的使用(或者直接使用PathMatcher实用程序类层次结构时),并且在构建时进行解析。它与资源类型本身无关。不能使用classpath*:前缀来构造实际的Resource,因为一个资源一次只指向一个资源。

蚂蚁式图案


示例如下:

/WEB-INF/*-context.xml
com/mycompany/**/applicationContext.xml
file:C:/some/path/*-context.xml
classpath:com/mycompany/**/applicationContext.xml

  当路径位置包含Ant样式的模式时,解析器会遵循更复杂的过程来尝试解析通配符。它为最后一个非通配符段的路径生成一个Resource,并从中获取一个URL。

  如果这个URL不是jar:URL或容器特定的变体(如WebLogic中的zip:、WebSphere中的wsjar等),则会从中获取java.io.File,并用于通过遍历文件系统来解析通配符。(在jar URL的情况下,解析器要么从中获取java.net.JarURLConnection,要么手动解析jar URL,然后遍历jar文件的内容以解析通配符)。

类路径:前缀


示例如下

ApplicationContext ctx = new ClassPathXmlApplicationContext("classpath*:conf/appContext.xml");

  使用 classpath*表示类路径下所有匹配文件名称的资源都会被获取(本质上就是调用了 ClassLoader.getResources(…)方法),接着将获取到的资源组装成最终的应用上下文。

  在位置路径的其余部分,classpath*: 前缀可以与 PathMatcher结合使用,如:classpath*:META-INF/*-beans.xml

  带有类路径的Ant样式模式:如果要搜索的根包在多个类路径位置可用,则不能保证资源能够找到匹配的资源。 示例如下

com/mycompany/package1/service-context.xml

classpath:com/mycompany/**/service-context.xml

  这样的资源可能只存在于类路径中的一个位置,但当使用前面的示例这样的路径来尝试解析它时,解析程序会处理getResource(“com/mycompany”);返回的(第一个)URL;。如果此基本包节点存在于多个ClassLoader位置,则所需资源可能不存在于找到的第一个位置。因此,在这种情况下,您应该更喜欢使用classpath*:使用相同的Ant样式模式,该模式搜索包含com.mycompany基本包的所有classpath位置:classpath*∶com/mycompany/**/service-context.xml

在这里插入图片描述

  如果喜欢的话,欢迎 

标签:xml,Spring,路径,classpath,应用,通配符,上下文,com
From: https://blog.51cto.com/u_16111319/7091378

相关文章

  • springboot 整合sentinel 和nacos实现流量控制
    方案一使用sentinel控制面板1、启动sentineljava-jarsentinel.jar2、在自己应用user中添加依赖<modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-pa......
  • SpringBoot3 学习笔记 (整合Druid)
    一、Druid Github地址:https://github.com/alibaba/druid/二、配置数据源1、在https://mvnrepository.com/artifact/com.alibaba/druid上找最新的版本 2、在pom.xml中添加上Druid数据源依赖<!--https://mvnrepository.com/artifact/com.alibaba/druid--><dependency......
  • SpringBoot3 学习笔记 (整合Mybatis-plus)
    1、引入依赖,网址:https://mvnrepository.com/artifact/com.baomidou 找到mybatis-plus-boot-starter这里最新版本为3.5.3.2,点击进去2、在pom.xml中添加依赖,并确认依赖中已经有了mysql-connector-j的依赖<!--https://mvnrepository.com/artifact/com.baomidou/mybatis-pl......
  • Spring Boot下实现Excel导入导出
    摘要:本文由葡萄城技术团队于51CTO原创并首发。转载请注明出处:[葡萄城官网],葡萄城为开发者提供专业的开发工具、解决方案和服务,赋能开发者。前言SpringBoot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行......
  • 数字孪生技术是什么?如何应用到建筑环境?
    随着科技的飞速发展,数字孪生技术逐渐成为了建筑行业的一个新选择,可能为建筑环境带来深远的变革。数字孪生技术是将物理世界与数字世界相连接的创新方法,通过实时数据采集、模拟仿真和智能分析,实现真实世界与虚拟世界的无缝互动与反馈,为建筑环境的规划、设计、施工和运营管理提供了......
  • 单元测试中的@SpringBootTest和@RunWith
    背景:平常都是写功能,写业务代码忽略了对测试案例的理解,借此机会梳理记录一下测试案例中常用到的的几个注解。一:@SpringBootTest作用是加载ApplicationContext,启动spring容器。使用@SpringBootTest时并没有像@ContextConfiguration一样显示指定locations或classes属性,原因在于@Sprin......
  • 浅谈AI浪潮下的视频大数据发展趋势与应用
    视频大数据的发展趋势是多样化和个性化的。随着科技的不断进步,人们对于视频内容的需求也在不断变化。从传统的电视节目到现在的短视频、直播、VR等多种形式,视频内容已经不再是单一的娱乐方式,更是涉及到教育、医疗、商业等各个领域。为了满足用户个性化的需求,视频大数据的分析和挖......
  • 介绍几款WPF应用的UI库
    在WPF中对于前端页面的书写,我们有现成的UI类库,不需要我们自己再去写我这里介绍几款1、MahApps官网https://mahapps.com/使用,在App.xaml中添加<Application.Resources><ResourceDictionary><ResourceDictionary.MergedDictionaries><Resourc......
  • 振弦传感器、采集仪及在线监测系统应用于地下隧道监测的完整案例
    振弦传感器、采集仪及在线监测系统应用于地下隧道监测的完整案例介绍振弦传感器、振弦采集仪及在线监测系统是岩土工程监测领域中常见的设备,能够对钢筋混凝土结构进行实时、准确的监测。本文将介绍一套完整链条的岩土工程监测案例,包括振弦传感器、振弦采集仪及在线监测系统的应......
  • Jmeter foreach 控制器应用
    场景:订单列表返回N个订单,需要针对N个订单进行确认操作1、订单列表接口,JSON提取器提取N个订单编号,如图 2、foreach控制器 3、beanshell前置处理器,将订单号FSO111--》替换为FMO111 ......