spring中注入的spring文件夹内容资源

时间:2010-10-26 22:46:59

标签: java spring

我需要传递一个文件夹(java.io.File)作为函数参数。

我试图声明文件夹的位置,但它在SERVER_HOME(/ home / user / tomcat)中查找。

所以我的下一个尝试是注入一个位于WEB-INF / myFolder中的文件(目录)。

我的第一次尝试失败了:

<bean name="path" class="java.io.File">  
    <constructor-arg value="classpath:WEB-INF/myFolder" />  
</bean>

但它查找/ home / user / tomcat / classpath:WEB-INF / myFolder

我一直在搞乱,但我无法弄明白该怎么做。

任何帮助或建议都会很棒。

谢谢大家!

2 个答案:

答案 0 :(得分:2)

您不应该从Web应用程序访问文件系统,尤其是不要对Web应用程序自己的文件表示进行假设。 WEB-INF/myfolder可能是也可能不是目录,具体取决于您是在处理WAR(否)还是爆炸WAR(是)。如果您绝对需要文件系统资源,请尝试使用System.getPreference("java.io.tmpdir")获取它。


好的,这里有一些提示:

使用Factory bean检索文件。让它

  1. Create a temporary directory
  2. Extract the contents of the jar到该临时目录
  3. 返回其getObject()方法
  4. 中的临时目录

    然后将工厂bean注入您的bean:

    <!-- This is a Factorybean that creates a file -->
    <bean class="com.yourcompany.ConfigFolderCreator" id="configDir">
        <property name="packageToUnpack" value="com.yourcompany.yourpackage" />
    </bean>
    
    <bean class="com.your.legacy.Api">
         <!-- inject the factory bean instead of a file -->
         <property name="configFolder" ref="configDir" />
    </bean>
    

答案 1 :(得分:0)

你可以使用spring的FileSystemResource

<bean id="bean" class="org.springframework.core.io.FileSystemResource">
        <constructor-arg><value>your.file</value></constructor-arg>
</bean>