Java 从spring上下文中的属性文件动态加载密钥

Java 从spring上下文中的属性文件动态加载密钥,java,spring,Java,Spring,我正在尝试在属性文件中动态加载一个键(具有值)。这就是我想做的。我有两台应用服务器A和B。两台服务器上都有一个quartz作业,每一小时运行一次,这导致了一些问题。为了解决这个问题,我想在属性文件中设置一个具有服务器名称的键(比如serverA,serverB),当我将quartz计划传递给cronbean(在springxml中)时,我应该传递的值(来自属性文件的键)应该是动态的。我的意思是,如果主机名是服务器A,那么来自服务器A的值应该从属性文件加载,服务器B也是如此。下面是代码段- **a

我正在尝试在属性文件中动态加载一个键(具有值)。这就是我想做的。我有两台应用服务器A和B。两台服务器上都有一个quartz作业,每一小时运行一次,这导致了一些问题。为了解决这个问题,我想在属性文件中设置一个具有服务器名称的键(比如serverA,serverB),当我将quartz计划传递给cronbean(在springxml中)时,我应该传递的值(来自属性文件的键)应该是动态的。我的意思是,如果主机名是服务器A,那么来自服务器A的值应该从属性文件加载,服务器B也是如此。下面是代码段-

**application-host.xml - Initialized hostname in spring context**

<bean id="hostname" factory-bean="localhost" factory-method="getHostName"/>
<bean id="localhost" class="java.net.InetAddress" factory-method="getLocalHost"/>

**application-quartz.xml - Place where am loading the quartz schedule**

<bean id="cronTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">

    <property name="jobDetail" ref="job" />
    <property name="cronExpression" value="${  serverA / serverB  }" /> ** THIS IS WHERE I WANT TO SET OR LOAD PROPERTIES FROM THE FILE, BASED ON THE HOST NAME.
</bean>

**env-test.properties**

serverA = 0 0 3 * * ?
serverB = 0 0 5 * * ?
**application-host.xml-在spring上下文中初始化主机名**
**application-quartz.xml-我加载quartz时间表的位置**
**这是我希望根据主机名从文件中设置或加载属性的位置。
**env-test.properties**
服务器A=0 0 3**?
服务器B=0.5**?
我知道其他方法,例如在启动应用程序服务器之前使用不同的计划更新属性文件,但这有点冒险,因为在部署过程中可能会错过。如果你能帮我找到更好的解决方案或回答这个问题,我将不胜感激


谢谢,Sirish。

为什么不使用不同的属性文件,其中包括serverA和serverB的主机名和cronexpression?@Marcelo-是的,但这会创建很多属性文件。我希望将所有这些都放在一个单独的属性文件中,每个环境,并根据主机名加载我想要的密钥(如上所述)。我理解您的需要,我只是认为这是错误的,您基本上希望将所有部署配置放在一个文件中。根据您的需要,调查