当前位置: 首页 > 面试题库 >

spring-context.xml的位置

黄弘盛
2023-03-14
问题内容

当我在tomcat上运行我的应用程序时,spring-context.xml文件位于

/WEB-inf/spring-context.xml

还行吧。但是运行一个junit测试,我必须为它提供spring-test-context.xml的位置,如下所示:

@ContextConfiguration(locations={"classpath:/spring-test-context.xml"})

唯一可行的方法是如果文件位于

/src/spring-context.xml

我怎样才能让我的应用程序在同一位置找到我的spring-context文件?以便它可以与junit testes一起使用并部署在tomcat上?

我尝试了此操作,但它给了我很多有关找不到任何bean的错误,但没有说明它找不到文件。

classpath:/WEB-INF/spring-test-context.xml

问题答案:

正如duffymo所暗示的那样,Spring TestContext
Framework(TCF)假定默认情况下字符串位置在类路径中。有关详细信息,请参见ContextConfiguration的JavaDoc 。

但是请注意,您还可以使用Spring的资源抽象(即,使用“
file:”前缀)在文件系统中使用绝对路径或相对路径指定资源。您可以在JavaDoc中找到有关Spring的ModifyLocations()方法的详细信息AbstractContextLoader

因此,例如,如果您的XML配置文件位于"src/main/webapp/WEB-INF/spring- config.xml"项目文件夹中,则可以将位置指定为相对文件系统路径,如下所示:

@ContextConfiguration("file:src/main/webapp/WEB-INF/spring-config.xml")

或者,您可以将Spring配置文件存储在类路径(例如src/main/resources)中,然后通过Spring MVC配置中的类路径引用它们-例如:

<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:/spring-config.xml</param-value>
</context-param>

<listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

使用这种方法,您的测试配置将看起来像这样(注意,前导斜线表示资源位于类路径的根目录中):

@ContextConfiguration("/spring-config.xml")

您可能还会发现参考手册的“
带有XML资源的上下文配置”部分很有用。

问候,

山姆

(Spring TestContext Framework的作者)



 类似资料:
  • 我有一个非常简单的Spring测试应用程序。但我得到了例外,即使一切似乎都井然有序。我可能漏掉了什么。请检查pic查看项目结构和web.xml文件中包含的内容以及异常:- eFinitionStoreException:IOException从类路径资源[WEB-INF/servlet-context.XML]解析XML文档;嵌套异常是java.io.FileNotFoundException:无

  • 是否应该将用于将特定于应用程序的配置部署到Tomcat的“context.xml”文件放置在: ...或者... 询问的理由:在StackOverflow上看到了相互矛盾的建议,但找不到Tomcat文档中提到的具体位置。

  • 在使用Tomcat时,我一直将视为或的等价物。似乎很自然,可能必须有某种方法来配置web服务器。 但是,我不太理解的用途。例如,在使用JDBC时,为什么必须在中添加,并在中添加包含更多信息的?我可以删除文件并在代码中实例化吗?我问是因为像这样的假设例子有助于我理解。 为什么我必须把这两个都放在那里才能使用JDBC?它们到底在做什么,除了在Java代码中,还有其他方法可以做同样的事情吗?就像我说的,

  • 问题内容: 是否有办法在spring-context.xml和JPA persistence.xml中引用.properties文件? 我想我在春季上下文文件中已经看到过这样的例子,尽管我不记得那是哪里。也许有人知道吗?关于persistence.xml,我实际上不确定这是否奏效。 我的目标是在开发和发行配置之间更改某些属性。我目前的想法是通过模板配置中的ant手动替换文件中的所有属性。尽管应该有

  • 问题内容: 我正在使用Spring和struts,并且在“ /META-INF/context.xml”中具有以下条目 是否可以通过以下方式实现, 我的applicationContext.xml具有以下内容, 我想从属性文件中选取jdbc.username和jdbc.pwd的值。 问题答案: 使用Spring的PlaceholderPropertyConfigurer(仅替换Spring上下文中

  • 在将非spring应用程序转换为Spring Boot时,您希望使用现有上下文。嵌入tomcat中的xml文件。 使用Spring Boot 1.5.1和Tomcat 8.5.11 TomcatEmbeddedServletContainerFactory配置 检查数据库连接的方法, 那么如何在Spring Boot中加载现有的context.xml。