2016-04-21 26 views
0

我没有太多的使用Spring Context的经验,我不知道这是否可能......我试图将一个变量设置为Spring XML文件来定义一个bean引用(不是属性)。Spring上下文:可以在XML中定义变量(而不是属性)并在运行时使用它来获取特定的引用bean?

现在我有一个specidific XML:

keyIntegrator-key1.xml

<import resource="classpath:/events/key-events.xml" /> 

<context:annotation-config /> 

<bean id="keyIntegrator" class="com.emulated.KeySimulator" > 
    <property name="readList"> 
     <list> 
      <bean class="com.emulated.ListEventGenerator"> 
       <property name="eventList"> 
        <ref bean="key-1-ok"/> 
       </property> 
      </bean> 
     </list> 
    </property> 
</bean> 

所有按键都在另一个XML文件(钥匙events.xml)定义。

我必须用Java载入运行豆“keyIntegrator”只有一个关键,那就是在Java程序中的输入参数(我用参数来决定的xml文件来加载)

我的问题是如果它可以定义XML文件中的变量,并使用这个变量获得引用bean:

事情是这样的:

keyIntegrator-generic.xml

<import resource="classpath:/events/key-events.xml" />  

<context:annotation-config />  

<bean id="keyIntegrator" class="com.emulated.KeySimulator" >  
    <property name="readList">  
     <list>  
      <bean class="com.emulated.ListEventGenerator">  
       <property name="eventList"> 
        <ref bean="key-{inputKeyParam}-ok"/>  
       </property> 
      </bean> 
     </list> 
    </property> 
</bean> 

在Java程序中,我需要传递参数去获得这个bean,这样的事情:

keySimulatorBean = (KeySimulator) context.getBean("keyIntegrator", "1"); 

有任何可能的方式,使这个?

非常感谢!

回答

0

有可能使用Spring Expression Language

例如参照豆可以用系统属性来定义

<ref bean="key-#{systemProperties.inputKeyParam}-ok"/> 

它将使参考根据所提供的VM的选项值,例如不同的豆-DinputKeyParam=1

0

非常感谢你,它为我工作:)

我设置好的Java代码中的系统属性值:

System.setProperty("inputKeyParam", "1"); 
相关问题