`
隐形的翅膀
  • 浏览: 498174 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

获得Context的几种方法

阅读更多
FileSystemXmlApplicationContext、ClassPathXmlApplicationContext和XmlWebApplicationContext简介

今天在用Spring时遇到一个问题,提示找不到applicationContext.xml文件。原来是在加载这个文件时调用的方法不太合适,所以造成了程序找不到项目下的xml配置文件。

我们常用的加载context文件的方法有如下三个:

1、FileSystemXmlApplicationContext

这个方法是从文件绝对路径加载配置文件,例如:

ApplicationContext ctx = new FileSystemXmlApplicationContext( "G:/Test/applicationcontext.xml ");

如果在参数中写的不是绝对路径,那么方法调用的时候也会默认用绝对路径来找,我测试的时候发现默认的绝对路径是eclipse所在的路径。

采用绝对路径的话,程序的灵活性就很差了,所以这个方法一般不推荐。

(如果要使用classpath路径,需要加入前缀classpath:   )



2、ClassPathXmlApplicationContext

这个方法是从classpath下加载配置文件(适合于相对路径方式加载),例如:

ApplicationContext ctx = new ClassPathXmlApplicationContext( "/applicationcontext.xml ");

该方法参数中classpath: 前缀是不需要的,默认就是指项目的classpath路径下面;这也就是说用ClassPathXmlApplicationContext时默认的根目录是在WEB-INF/classes下面,而不是项目根目录。这个需要注意!

ApplicationContext factory=new ClassPathXmlApplicationContext("classpath:applicationContext.xml");
ApplicationContext factory=new ClassPathXmlApplicationContext("conf/userConfig.xml");   // src/conf 目录下的
ApplicationContext factory=new ClassPathXmlApplicationContext("file:G:/Test/src/appcontext.xml");

注意:在1、2的加载方式中可以加载多个配置文件,获取到ApplicationContext 对象中    String[] configs = {"applicationContext.xml","user_spring.xml"};

ApplicationContext ctx = new ClassPathXmlApplicationContext(configs);
//ApplicationContext ctx=new FileSystemXmlApplicationContext(configs);   AbstractDao myUserDAO =  (AbstractDao) ctx.getBean("userDao");



3、XmlWebApplicationContext

专为web工程定制的方法,推荐Web项目中使用。例如:

ServletContext servletContext = request.getSession().getServletContext();

ApplicationContext ctx = WebApplicationContextUtils.getWebApplicationContext(servletContext);



注:web.xml里面可以定义两种参数:

❶ application范围内的参数,存放在servletcontext中。<context-param>中的参数(可以指定多个文件)

❷ servlet范围内的参数,只能在servlet的init()方法中取得, <init-param>中的参数,在init方法中用this.getInitParameter("param1")



要是spring配置多个xml,并且这些文件相互应用的加载方式的配置:

1:在web.xml配置,应用服务去加载  

<servlet>
<servlet-name>app</servlet-name>
<servlet-class>
org.springframework.web.servlet.DispatcherServlet
</servlet-class>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/applicationContext*.xml,/WEB-INF/user_spring*.xml</param-value>
</context-param>
<load-on-startup>1</load-on-startup>  
</servlet>



2:在/WEB-INF/applicationContext.xml配置应用服务去加载 

可以在applicationContext.xml中用import引入其他的配置文件   <import resource="user_spring.xml" />
分享到:
评论

相关推荐

    Shape Context

    Shape Context是一种有效的形状匹配和识别方法,特别是在计算机视觉和图像处理领域中有着广泛的应用。它由Belongie等人在2002年提出,主要用于识别和比较物体的形状,即使这些形状存在旋转、缩放和部分遮挡的情况。...

    shape context形状上下文

    形状上下文(Shape Context)是一种在计算机视觉领域用于形状匹配和物体识别的高级技术。它由Belongie等人在2002年提出,通过量化和比较形状上每个点的局部几何环境,来实现对复杂形状的有效分析和比较。这个方法在...

    Struts2的Action中获得request response session几种方法

    通过`ActionContext`的`getContext()`方法可以得到当前的`ActionContext`实例,然后通过这个实例进一步获取到request、response和session。 #### 示例代码: ```java import ...

    获取HDC的几种方法.txt

    ### 获取HDC的几种方法 在C++编程中,特别是在Windows平台上的图形界面开发中,经常需要绘制图像或文本到显示器、打印机等设备上。为了完成这些操作,我们需要获得一个设备上下文句柄(Handle to Device Context,...

    Context-Aware Saliency Detection的Matlab代码

    Context-Aware Saliency Detection(上下文感知显著性检测)是一种先进的显著性检测方法,它将图像的局部信息与全局上下文相结合,从而更准确地定位图像的显著对象。本文将深入探讨如何使用Matlab实现这一算法,并...

    网页中嵌入swf文件的几种方法

    ### 网页中嵌入SWF文件的几种方法 #### 一、`object`与`embed`结合方式 此方法结合了`object`与`embed`两种标签的优势,是Macromedia一直推荐的一种方式。 **优点:** - 兼容性好,几乎可以在所有浏览器上运行。...

    Context-Enhance-via-Fusion-master_matlab_toolbox_

    这个工具箱可能提供了以下几种功能: 1. 图像融合:将多源图像(如不同波段的遥感图像、多光谱图像、深度图像等)进行融合,以提取更丰富的信息。 2. 上下文信息提取:通过特征检测、边缘检测、纹理分析等技术,...

    mat_shpcnt.rar_Shape Context_in_shape matlab

    Shape Context是一种描述形状特征的方法,由Belongie等人于2002年提出,主要用于形状匹配和识别。该方法通过在形状的每个点上计算其相对于其他所有点的几何和方向关系,构建出一种上下文信息,能有效捕捉形状的局部...

    Java读取Properties文件几种方法总结

    Java读取Properties文件几种方法总结 Java读取Properties文件是Java开发中常见的操作,Properties文件是一种常用的配置文件格式,可以存储各种配置信息。Java提供了多种方法来读取Properties文件,本文将总结六种...

    Android手机获取Mac地址的几种方法

    以下是三种常见的方法来获取Android手机的Mac地址: 1. **通过WiFiManager获取**: 这是最常用的方法,它通过`Context`的`getSystemService()`方法获取`WifiManager`实例,然后调用`getConnectionInfo()`获取连接...

    Android 获取内外SD卡路径几种方法总结

    下面将详细讲解几种获取Android设备内外SD卡路径的方法。 ### 方法一:使用Environment类 Android SDK 提供了 `Environment` 类来获取设备的基本存储路径。对于内置SD卡(通常称为内部存储),可以通过以下方式...

    总结一下java获取路径几种途径

    以下是对Java中获取路径几种常见途径的详细解析,包括了从Web应用环境到普通Java应用程序中路径获取的方法,旨在为开发者提供全面的指导。 ### 1. Web应用中的路径获取 #### a. Servlet上下文路径 在Servlet环境中...

    Spring在应用中获得Bean的方法

    获取Bean主要有以下几种方式: 1. **通过名称获取Bean** 使用`ApplicationContext`的`getBean(String name)`方法可以直接根据Bean的定义名称获取到对应的实例。例如: ```java ApplicationContext context = new...

    asp.net 页面之间传递参数的几种方法

    以下是页面之间传递参数的几种方法: 1. 通过URL链接地址传递 这是一种非常直接的方法,可以在URL的查询字符串中附加参数。在发送页面中,可以通过Response对象的Redirect方法将参数附加到目标页面的URL后,如: ...

    jquery ready()的几种实现方法小结

    下面就来详细探讨jQuery ready()的几种实现方法。 1. 标准写法 最常用且标准的写法是使用jQuery封装好的ready()函数,具体如下: ```javascript $(document).ready(function() { // DOM已经加载完毕,可以在这里...

    A Context-aware Attention Network for Interactive Question Answering

    标题中提到的“A Context-aware Attention Network for Interactive Question Answering”指的是一个用于交互式问答(IQA)的上下文感知注意力网络。这个标题直接表明了研究的核心:构建一个能够理解上下文信息,并...

Global site tag (gtag.js) - Google Analytics