【发布时间】:2015-12-18 10:44:29
【问题描述】:
我有一个 Web 应用程序(基于 Spring,Struts 2 构建),我正在尝试基于属性在主 struts.xml 配置中动态包含一个 struts 配置文件。
已定义,在属性文件中:
key=foo
我尝试在 struts.xml 中使用它:
<struts>
...
<include file="/config/struts/struts-${key}.xml" />
</struts>
包含“struts-foo.xml”文件(或其他文件,取决于值)。
属性文件由 Spring 在启动时加载,我可以在 Spring 的 xml 文件中使用它来参数化 bean 定义。
【问题讨论】:
-
struts.xml 文件没有被 spring 加载。
-
感谢亚历山大;还有其他方法可以读取 struts 文件中的属性/参数吗?
-
您可以在构建应用程序时替换关键字。或者在 struts.xml 中包含所有文件并仅将其中的一些复制到包中。
-
是的,这听起来绝对是 Maven 任务(或其他)的工作。还要记住,为了实现完全的可测试性,构建的可重复性很重要,因此(在完美的世界中)构建应该始终相同,无论环境是 dev 还是 prod,并且配置应该是外部的它,例如在环境变量或服务器本身的文件中。也就是说,为什么需要包含不同的 struts.xml ?这是一个奇怪的用例,most likely XY
-
@AndreaLigios 我正在开发一个 web 应用程序,它将在两个不同的站点上运行:它们将非常相似,但有一些小的自定义,比如说 85% 的通用对 15% 的自定义。在我工作的地方,我们通常通过分支整个代码库或使用
if(site1)..else if (site2)填充代码来解决这个问题,我不喜欢这些解决方案......这是一种模块化定制的尝试,并且只根据本地安装,由属性引导(在这些问题中,我询问的是动作映射,但我使用相同的系统来加载不同的 spring bean)。
标签: spring properties struts2