Spring 上下文:可以在 XML 中定义变量(不是属性)并在运行时使用它来获取特定的引用 bean 吗?
Spring Context: It's possible to define variables (not properties) in a XML and use it in runtime to obtain specific referenced beans?
我没有太多使用 Spring 上下文的经验,我不知道这是否可能...我正在尝试设置 Spring XML 文件一个变量来定义一个 bean 引用(不是 属性)。
现在我有一个具体的 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 文件中定义 (key-events.xml)。
我必须在 Java 运行时加载 bean "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");
有什么方法可以做到这一点?
非常感谢!
可以使用 Spring Expression Language。
例如,可以使用系统 属性
定义对 bean 的引用
<ref bean="key-#{systemProperties.inputKeyParam}-ok"/>
它将允许根据提供的 VM 选项值引用不同的 bean,例如-DinputKeyParam=1
非常感谢,它对我有用:)
我在 Java 代码中设置了系统 属性 值:
System.setProperty("inputKeyParam", "1");
我没有太多使用 Spring 上下文的经验,我不知道这是否可能...我正在尝试设置 Spring XML 文件一个变量来定义一个 bean 引用(不是 属性)。
现在我有一个具体的 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 文件中定义 (key-events.xml)。
我必须在 Java 运行时加载 bean "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");
有什么方法可以做到这一点?
非常感谢!
可以使用 Spring Expression Language。
例如,可以使用系统 属性
<ref bean="key-#{systemProperties.inputKeyParam}-ok"/>
它将允许根据提供的 VM 选项值引用不同的 bean,例如-DinputKeyParam=1
非常感谢,它对我有用:)
我在 Java 代码中设置了系统 属性 值:
System.setProperty("inputKeyParam", "1");