我正在使用Spring 3.1如何設置許多獨特的MDB實例
我配置了HornetQ和MDB來監聽它。
我的目標是向這些MDBS注入一個具有獨特屬性的屬性類。
每個MDB會把它當我嘗試它,我得到異常的自身屬性
。
那是我的代碼:
MDB:
public class FeedListenerMDB implements MessageListener
{
private final static Logger log = Logger.getLogger(FeedListenerMDB.class);
FeedPropertiesDTO feedPropertiesDTO;
...
@Override
public void onMessage(Message message)
{
if (message instanceof TextMessage)
{
try
{
String text = ((TextMessage) message).getText();
log.debug("i am marketmaker=" + feedPropertiesDTO.getMarketMakerId() + " and the message I got=" + text);
}
catch (JMSException ex)
{
throw new RuntimeException(ex);
}
}
else
{
throw new IllegalArgumentException("Message must be of type TextMessage");
}
}
}
那FeedPropertiesDTO :
public class FeedPropertiesDTO
{
private String marketMakerId;
public String getMarketMakerId()
{
return marketMakerId;
}
public void setMarketMakerId(String marketMakerId)
{
this.marketMakerId = marketMakerId;
}
}
現在這是我的應用程序上下文豆類設置:
<bean id="FeedListenerMarketMaker1MDB" class="com.fixgw.mdb.FeedListenerMDB">
<property name="feedPropertiesDTO" ref="feedListenerMarketMaker1Properties" />
</bean>
<bean id="feedListenerMarketMaker1Properties" class="com.fixgw.dto.FeedPropertiesDTO">
<property name="marketMakerId" value="1" />
</bean>
<bean id="FeedListenerMarketMaker2MDB" class="com.fixgw.mdb.FeedListenerMDB">
<property name="feedPropertiesDTO" ref="feedListenerMarketMaker2Properties" />
</bean>
<bean id="feedListenerMarketMaker2Properties" class="com.fixgw.dto.FeedPropertiesDTO" >
<property name="marketMakerId" value="2" />
</bean>
以這種方式,我能夠從applicationContext配置我的MDBS,並在未來觸摸代碼的情況下添加新的MDBS。
但我得到這個錯誤:
Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No unique bean of type [com.fixgw.mdb.FeedListenerMDB] is defined: expected single matching bean but found 2: [FeedListenerMarketMaker1MDB, FeedListenerMarketMaker2MDB]
at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:800)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:707)
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredMethodElement.inject(AutowiredAnnotationBeanPostProcessor.java:551)
... 17 more
任何想法,我怎麼能做到我需要什麼?
謝謝, 射線。
正如我寫的。但謝謝:) – rayman 2012-07-10 14:18:59
@rayman yup:你寫了4秒比我做得更快:-) – 2012-07-10 14:20:02
那麼你仍然可以得到答案:)但如果你能回答我這個問題(http://stackoverflow.com/questions/) 11411980/using-staticapplicationcontext-for-managing-beans-dynamic)如果你有良好的Spring經驗,我會非常感謝:) – rayman 2012-07-10 14:23:27