0

让我描述一下我的情况:我创建了我的 spring-mvc webapplication,其结构如下:

-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 的构造函数采用 filePath 参数从 settings.xml 解析为 XMLBeans。我希望应用程序创建一个 ReadAttributesService bean,所以我把它放到我的 applicationContext.xml 文件中

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

好的,无论我给 applicationContext 的 filePath 的值是什么,都不起作用,至少我已经完成了。最后,我想创建一个新的settings.xml FileInputStream,但我还没有找到任何方法来完成这个。

所以简单地说,我想问我如何在我的spring-mvc web应用程序中创建一个FileInputStream或settings.xml的AbsolutePath?在此先感谢您,任何帮助都非常有用。

4

1 回答 1

0

如果您只需要 a InputStream(而不是 a FileInputStream),因为settings.xml应该在您的类路径中,我会尝试使用Spring Resources。您的 XML bean 声明应如下所示:

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

使用类似的构造函数 arg ReadAttributesService

public class ReadAttributesService {

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

Spring 会自动将settings.xml字符串转换为Resource(实际上是 a ClassPathResource)。

从那里您应该能够调用该getInputStream()资源上的方法。

如果你真的需要 a FileInputStream,它会变得很棘手。

于 2013-09-23T17:26:26.897 回答