具有不同属性的Spring上下文文件重用

具有不同属性的Spring上下文文件重用,spring,configuration,Spring,Configuration,我有一个相当直接的spring集成应用程序,它轮询外部FTP站点,使用一些内部业务逻辑处理找到的任何文件,然后通过FTP发布结果文件。当前,当我们添加新客户时,我们复制XML配置文件和相应的属性文件,并更改所有bean定义、bean引用和属性的前缀。然后,我们将其添加到一个XML配置文件中,该文件只需导入所有现有客户及其属性: <property-placeholder location=" file:config/application.properties ,file:

我有一个相当直接的spring集成应用程序,它轮询外部FTP站点,使用一些内部业务逻辑处理找到的任何文件,然后通过FTP发布结果文件。当前,当我们添加新客户时,我们复制XML配置文件和相应的属性文件,并更改所有bean定义、bean引用和属性的前缀。然后,我们将其添加到一个XML配置文件中,该文件只需导入所有现有客户及其属性:

<property-placeholder location="
    file:config/application.properties
    ,file:config/test-customer1.properties
    ,file:config/test-customer2.properties
 "/>                    
<import resource="test-customer1-context.xml" />
<import resource="test-customer2-context.xml" />

除了bean名称中唯一的客户前缀之外,这些xml文件是相同的。似乎我必须找到一种方法来重用具有不同属性集的单个XML文件(或Java配置对象)。我的第一个想法是实现一个定制的CustomerScope,但我不知道scope实现如何知道合适的客户

关于如何做到这一点,有什么想法吗

根据要求,客户上下文文件示例

<bean id="testClient1RequestQueue" class="org.apache.activemq.command.ActiveMQQueue">
    <constructor-arg value="${test.client1.in.queue}"/>
</bean>

<bean id="testClient1ResultsQueue" class="org.apache.activemq.command.ActiveMQQueue">
    <constructor-arg value="${test.client1.results.queue}"/>
</bean>
...

...

请添加您的一个文件test-customer1-context.xml的内容。我不确定客户文件中的内容是否重要,但我将包含一个片段(它们相当大)。