通常在一个基于maven的spring应用程序中,如果我需要使用任何文件资源,我通常会将它放在一个文件夹src/main/resources中,然后它将神奇地用于spring app config文件,如下所示,其中有一个文件引用,如"classpath:create-table.sql“。
spring_config.xml
<jdbc:embedded-database id="dataSource" type="DERBY">
<jdbc:script location="classpath:create-table.sql" />
</jdbc:embedded-database>如果应用程序上下文是从web.xml用WebApplicationContext加载的,那么在这种情况下,应用程序上下文甚至不需要下面的初始化样式,但是如果我要编写一个独立的基于java的spring应用程序,它需要下面的应用程序上下文初始化,而不是基于maven或web的应用程序,那么如何使它的类路径中的任何资源文件可用来引用这样的文件(create-table.sql),如在配置文件中所示?
ApplicationContext context = new ClassPathXmlApplicationContext("/spring_config.xml");我知道如何使用如下所示的绝对路径加载,但我需要的是能够在类路径中为spring配置文件提供资源文件,以便从类路径本身引用。
<jdbc:embedded-database id="dataSource" type="DERBY">
<jdbc:script location="file:C:\junit_framework\springmodulecontext\create-table.sql" />
</jdbc:embedded-database>如果有一种使用相对路径引用文件的方法,这样我就可以将资源文件放在配置文件的旁边,并使用当前目录符号(如" file :./create-table.sql“)来引用它,这会更好吗?我试过这种绝对表示法,但似乎行不通。
发布于 2020-01-14 16:03:01
如果我要编写一个独立的基于java的spring应用程序,而不是基于maven或web的,我可以通过将它的目录路径(绝对路径或相对路径)包含到java -classpath列表中,从而使类路径中的任何资源文件可用。
也就是说,如果我希望像" classpath :create-table.sql“这样的文件引用实际读取./create-table.sql,我需要将一个. (它是所需文件的目录路径)放到类路径中,如下所示:
java -classpath .:lib/*..jar:.
https://stackoverflow.com/questions/59737326
复制相似问题