簡體   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