Note that there are some explanatory texts on larger screens.

plurals
  1. POSpring - How to choose properties in dependent bean?
    primarykey
    data
    text
    <p>Suppose, I have the following beans in my Spring xml:</p> <pre><code>&lt;bean id="mqConnectionFactory" class="com.ibm.mq.jms.MQQueueConnectionFactory"&gt; &lt;property name="hostName" value="${host}"/&gt; &lt;property name="port" value="${mq.port}"/&gt; &lt;/bean&gt; &lt;bean id="jmsQueueConnectionFactory" class="org.springframework.jms.connection.SingleConnectionFactory"&gt; &lt;property name="targetConnectionFactory" ref="mqConnectionFactory"/&gt; &lt;/bean&gt; &lt;bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate"&gt; &lt;property name="connectionFactory" ref="jmsQueueConnectionFactory"/&gt; &lt;/bean&gt; </code></pre> <p>I need to send messages to different hosts, but I don't want define several connection factory beans.</p> <p>It would be great to specify host something like this:</p> <pre><code>class A { @Autowired(host="host1") private JmsTemplate jmsTemplate; } class B { @Autowired(host="host2") private JmsTemplate jmsTemplate; } </code></pre> <h2>Update:</h2> <p>I can create the following config:</p> <pre><code>&lt;bean id="mqConnectionFactory1" class="com.ibm.mq.jms.MQQueueConnectionFactory"&gt; &lt;property name="hostName" value="${host1}"/&gt; &lt;property name="port" value="${mq.port}"/&gt; &lt;/bean&gt; &lt;bean id="mqConnectionFactory2" class="com.ibm.mq.jms.MQQueueConnectionFactory"&gt; &lt;property name="hostName" value="${host2}"/&gt; &lt;property name="port" value="${mq.port}"/&gt; &lt;/bean&gt; &lt;bean id="jmsQueueConnectionFactory1" class="org.springframework.jms.connection.SingleConnectionFactory"&gt; &lt;property name="targetConnectionFactory" ref="mqConnectionFactory1"/&gt; &lt;/bean&gt; &lt;bean id="jmsQueueConnectionFactory2" class="org.springframework.jms.connection.SingleConnectionFactory"&gt; &lt;property name="targetConnectionFactory" ref="mqConnectionFactory2"/&gt; &lt;/bean&gt; &lt;bean id="jmsTemplate1" class="org.springframework.jms.core.JmsTemplate"&gt; &lt;property name="connectionFactory" ref="jmsQueueConnectionFactory1"/&gt; &lt;/bean&gt; &lt;bean id="jmsTemplate2" class="org.springframework.jms.core.JmsTemplate"&gt; &lt;property name="connectionFactory" ref="jmsQueueConnectionFactory2"/&gt; &lt;/bean&gt; </code></pre> <p>Then:</p> <pre><code>class A { @Resource("jmsTemplate1") private JmsTemplate jmsTemplate; } class B { @Resource("jmsTemplate2") private JmsTemplate jmsTemplate; } </code></pre> <p>It seems wrong and complicated. The question would be to reduce this config and pass host as parameter. In other words I want to tell Spring: "Create me jmsTemplate and set property host of connectionFactory to this value."</p>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload