2013-09-23 135 views
0

讓我描述像以下我的情況:我 創建我的春天MVC的web應用,結構是這樣的:獲取XML文件的工作路徑

-Trainingapp 
    -Java Resources 
     -src/test/java 
     -src/test/resources 
     -src/main/java 
      -com.example.controller 
      -com.example.dao 
       -ReadAttributesService.java 
      -com.example.ctx 
       -AppContext.java 
      -com.example.pojos 
     -src/main/resources 
      -META-INF 
       -applicationContext.xml 
      settings.xml 

ReadAttributesService的構造函數需要一個文件路徑參數從settings.xml中解析轉換成XMLBeans。我希望應用程序創建ReadAttributesService的豆,所以我把這個給我applicationContext.xml文件

<!-- ReadAttributesService bean --> 
<bean id="readAttributesService" class="com.example.dao.ReadAttributesService"> 
    <constructor-arg name="filePath" value="src/main/resources/settings.xml" /> 
</bean> 

不管我給了ApplicationContext的文件路徑的值行不通的,至少與我所確定完成。最後,我想創建一個新的FileInputStream的settings.xml,但我還沒有找到任何方法來實現這一點。

所以,把這個簡單,我想問我怎麼能創建一個FileInputStream或類似我的spring-mvc webapplication中settings.xml的AbsolutePath? 先進的謝謝,任何幫助真的appriciate。

回答

0

如果你只需要一個InputStream(而不是一個FileInputStream),因爲settings.xml應該在你的classpath中,我會嘗試使用Spring Resources。你的XML bean聲明應該是這個樣子:

<!-- ReadAttributesService bean --> 
<bean id="readAttributesService" class="com.example.dao.ReadAttributesService"> 
    <constructor-arg name="settings" value="settings.xml" /> 
</bean> 

隨着ReadAttributesService像構造ARG:

public class ReadAttributesService { 

    public ReadAttributesService(org.springframework.core.io.Resource settings){ 
     ... 
    } 
    ... 
} 

Spring會自動轉換settings.xml串入Resource(這實際上是一個ClassPathResource) 。

從那裏您應該可以調用該資源的getInputStream()方法。

如果你真的需要FileInputStream,它會變得棘手。

+0

不,資源和ClassPathResource足夠了:D謝謝! – nhduc