Java 无法自动连接异常侦听器

Java 无法自动连接异常侦听器,java,spring,spring-boot,jms,spring-jms,Java,Spring,Spring Boot,Jms,Spring Jms,我创建了一个MessageListener,它将使用来自Azure服务总线的消息。使用SingleConnectionFactory创建连接时,我正在尝试设置异常侦听器。myExceptionListener和Configuration都在不同的类中。因此,在我的配置类中,我试图自动连接一个实现了ExceptionListener的类。当我这样做时,我将自动连线ExceptionListener设置为空。请告诉我是否可以自动连线例外侦听器。请在下面找到我的示例代码: @Component pub

我创建了一个
MessageListener
,它将使用来自Azure服务总线的消息。使用
SingleConnectionFactory
创建连接时,我正在尝试设置
异常侦听器
。my
ExceptionListener
和Configuration都在不同的类中。因此,在我的配置类中,我试图自动连接一个实现了
ExceptionListener
的类。当我这样做时,我将自动连线
ExceptionListener
设置为空。请告诉我是否可以自动连线
例外侦听器
。请在下面找到我的示例代码:

@Component
public class JMSExcepListener implements ExceptionListener{
@Autowired
private DefaultMessageListenerContainer listenerContainer;

@Autowired
private SingleConnectionFactory conFactory;

@Override
public void onException(JMSException exception) {
    listenerContainer.destroy();
    listenerContainer.initialize();
    try {
        conFactory.createConnection();
    } catch (JMSException e) {
        e.printStackTrace();
    }
    System.out.println("Exception");
}}
我正在
SingleConnectionFactory

@Configuration
public class AzureConfig{
@Autowired
    JMSExcepListener  jmsExcListener;
@Autowired
MessageConsumer messageConsumer;
    @Bean
    public SingleConnectionFactory jmsConnectionFactory() {
        SingleConnectionFactory cachingConnectionFactory = null;
        try {
            cachingConnectionFactory = new SingleConnectionFactory(ConnectionFactoryImpl.createFromURL(url));
            cachingConnectionFactory.setReconnectOnException(true);
            cachingConnectionFactory.setClientId(applicationName);
            singConnFactory.setExceptionListener(jmsExcListener);
        } catch (MalformedURLException e) {

        }
        return cachingConnectionFactory;
    }
    }
 @Bean
public DefaultMessageListenerContainer getContainer() {
    DefaultMessageListenerContainer container = new  DefaultMessageListenerContainer();
    container.setConnectionFactory(jmsConnectionFactory());
    container.setDestinationName(queueName);
    container.setMessageListener(messageConsumer);
    return container;
}
}
此处
jmseclistener
为空,但消息消费者工作正常,请帮助


这是因为任何循环注入,因为我尝试在AzureConfig中注入ExceptionListener,并尝试将在AzureConfig中创建的bean注入ExceptionListener。如何解决这个问题?

以防你从未注意到这一点;你有一个循环依赖链

JMSExcepListener类需要一个SingleConnectionFactory(通过autowire) 它是在AzureConfig中创建的 bean,这反过来需要一个JMSExcepListener(通过autowire)


解决方案始终是这样的:不要在配置类中的类级别自动关联依赖项。

确保
jmseclistener
位于组件扫描路径上,并且组件扫描已完成enabled@borowis组件扫描已启用,我可以自动连接位于同一程序包路径中的另一个组件,这意味着您的AzureConfig不由spring管理,对吗?@borowis AzureConfig仅由spring管理。更新了代码,我可以自动连接其他组件,但ExceptionListener单独也会出现。这个ExceptionListener没有什么特别之处,你当然可以自动连接,但我无法从上面的代码片段中判断原因。也许你可以提供更多的代码?