繁体   English   中英

春豆配置

[英]spring beans configuration

我正在使用Spring的依赖注入,但是我在Spring配置文件中加载资源时遇到了困难。

资源是XML文件,位于类路径的JAR文件中。 我尝试按如下方式访问它:

<import resource="classpath:com/config/resources.xml" />

但是我一直遇到以下错误:

无法从URL位置导入bean定义[classpath:com / config / resources.xml]

JAR文件位于Java项目的类路径中,而该项目又由我的Web应用程序使用。 我应该真的在Web项目中进行Spring配置而不是Java项目,还是重要?

如果它需要在您的webapp的类路径中,那么您应该将包含配置文件的JAR粘贴到您的WEB-INF / lib目录中。

如果您使用的是webapp,那么常见的约定是使用ContextLoaderListener来确保将WebApplicationContext插入ServletContext中的标准位置:

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

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

然后使用WebApplicationContextUtils使用以下命令从servlet上下文中捕获应用程序上下文:

WebApplicationContext wac = WebApplicationContextUtils.getRequiredWebApplicationContext(getServletContext());

我用red5插件遇到了类似的问题。 我这样解决了:

try {
  subContext = new FileSystemXmlApplicationContext(new String[] { "classpath*:/myconfig.xml" }, true, context);
} catch (Exception fnfe) {
  subContext = new FileSystemXmlApplicationContext(new String[] { "plugins/myconfig.xml" }, true, context);
}

这将首先查看类路径中的任何位置,包括在包含我的代码的jar中。 如果发生异常,则检查插件目录。 它可能不是最好的解决方案,但它有效。

我真的不记得为什么这很重要,但是尝试在冒号(:)类路径前放一个星号( :/如果这不起作用,请尝试使用冒号后的星号(classpath:*),尽管我认为它在结肠之前。

我只在J2SE中使用了<import>指令,它没有classpath:前缀,只是作为<import resource="config/resources.xml" /> 但是在J2EE中,如果所有文件都在WEB-INF中,它应该是相似的,只需导入resource =“bla.xml”它应该找到它,虽然在J2EE中你不需要这样做,因为在web.xml中你可以在web.xml中的contextConfigLocation上下文参数中定义多个文件,只需用空格或换行符分隔它们即可。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM