从类路径加载文件

Ste*_*360 11 spring file classpath

我有一行代码:File file = new File(getFile())在java类中HandleData.java

方法 - getFile()获取属性的值fileName.并fileName通过application_context.xml类的bean部分注入 - HandleData如下:

 <bean id="dataHandler" class="com.profile.transaction.HandleData">
 <property name="fileName" value="DataFile.xml"></property>
 </bean>
Run Code Online (Sandbox Code Playgroud)

我成功地构建了项目并检查了 - DataFile.xml是否存在WEB-INF/classes.并且HandleData.class存在于WEB-INF/classes/com/profile/transacon

但是当我运行它时会抛出filenotfound异常.如果我注入绝对路径(C:\MyProjectWorkspace\DataProject\target\ProfileService\WEB-INF\classes\DataFile.xml它成功找到文件).

有人可以帮助确定要注入的正确路径,以便从类路径中获取文件吗?

hel*_*lmy 37

虽然注入a File通常是首选方法,但您也可以利用Spring的ResourceLoader来动态加载资源.

通常,这就像注入ResourceLoaderSpring bean 一样简单:

@Autowired
private ResourceLoader resourceLoader;
Run Code Online (Sandbox Code Playgroud)

然后从类路径加载:

resourceLoader.getResource("classpath:myfile.txt");
Run Code Online (Sandbox Code Playgroud)


Luc*_*cas 3

你应该有:

<property name="fileName" value="classpath:DataFile.xml" />
Run Code Online (Sandbox Code Playgroud)

它应该被注入为org.springframework.core.io.Resource类似于这个答案