我需要传递一个文件夹(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
我一直在搞乱,但我无法弄明白该怎么做。
任何帮助或建议都会很棒。
谢谢大家!
答案 0 :(得分:2)
您不应该从Web应用程序访问文件系统,尤其是不要对Web应用程序自己的文件表示进行假设。 WEB-INF/myfolder
可能是也可能不是目录,具体取决于您是在处理WAR(否)还是爆炸WAR(是)。如果您绝对需要文件系统资源,请尝试使用System.getPreference("java.io.tmpdir")
获取它。
好的,这里有一些提示:
使用Factory bean检索文件。让它
getObject()
方法然后将工厂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>