我有一个关于让Spring从项目外部的应用程序上下文中读取文件的快速问题。我有两个项目; 1)项目A 2)项目数据库。项目A具有以下结构;
ProjectA
|-src
|-main
|-webapp
|-WEB-INF
|-config
|-spring
项目数据库具有以下结构:
Project Database
|-db
|-scripts
|-deltas
在Project A的spring目录中,我有一个dao-context文件。在这里我配置了一个嵌入式数据库,但是我想用项目数据库中的脚本初始化数据库。具体来自目录deltas。
我知道嵌入式数据库配置应该如下:
<jdbc:embedded-database id="dataSource" type="H2">
<jdbc:script location="someSchema.sql"/>
</jdbc:embedded-database>
但是,我正在尝试确定引用项目数据库中脚本的最佳方法。换句话说,如果我想在位置使用脚本,那么应该是位置的值。一些细节:
有什么想法吗?
干杯
编辑:两个项目都只是文件夹而不是罐子。这两个项目都不在彼此的类路径中。除了它们在同一目录中之外没有任何关系。
编辑2:另一种情况(可能会发生)是db脚本可能与ProjectA在同一个项目中,但不在类路径中。例如,目录结构可能如下所示:
ProjectA
|-db
|-scripts
|-deltas
|-src
|-main
|-webapp
|-WEB-INF
|-config
|-spring
如果是这种情况,我将如何访问&#39;增量&#39;中的脚本?来自&#39; spring&#39;的目录?目录
答案 0 :(得分:2)
我有(或多或少)了解你的要求,但有许多警告。
首先,在开发应用时,有三类路径:
Web应用程序通常独立于其源路径执行,最终在另一台机器上执行:您构建战争并部署在servlet或JEE容器中。
您可以使用环境变量,系统属性或属性值来设置Web应用程序中数据路径的根。在使用PropertySourcesPlaceholderConfigurer
在应用程序上下文中设置${...}
值时,Spring非常友好地允许环境变量覆盖属性值。然后使用该值来访问项目外的数据。
在您的示例中,您为db
位置定义了此类属性,并相对于该位置访问所有数据库配置。