diff --git a/spring-kafka/src/main/java/org/springframework/kafka/config/KafkaListenerEndpointRegistry.java b/spring-kafka/src/main/java/org/springframework/kafka/config/KafkaListenerEndpointRegistry.java index 10841688cc..45ee6bc280 100644 --- a/spring-kafka/src/main/java/org/springframework/kafka/config/KafkaListenerEndpointRegistry.java +++ b/spring-kafka/src/main/java/org/springframework/kafka/config/KafkaListenerEndpointRegistry.java @@ -122,7 +122,7 @@ public MessageListenerContainer getUnregisteredListenerContainer(String id) { refreshContextContainers(); return this.unregisteredContainers.get(id); } - return null; + return container; } /** diff --git a/spring-kafka/src/test/java/org/springframework/kafka/config/KafkaListenerEndpointRegistryTests.java b/spring-kafka/src/test/java/org/springframework/kafka/config/KafkaListenerEndpointRegistryTests.java index bccf4bd6de..3d395aae6a 100644 --- a/spring-kafka/src/test/java/org/springframework/kafka/config/KafkaListenerEndpointRegistryTests.java +++ b/spring-kafka/src/test/java/org/springframework/kafka/config/KafkaListenerEndpointRegistryTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2022 the original author or authors. + * Copyright 2022-2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -22,10 +22,13 @@ import org.junit.jupiter.api.Test; +import org.springframework.context.support.GenericApplicationContext; +import org.springframework.kafka.listener.ConcurrentMessageListenerContainer; import org.springframework.kafka.listener.MessageListenerContainer; /** * @author Gary Russell + * @author Artem Bilan * @since 2.8.9 * */ @@ -47,4 +50,19 @@ void unregister() { assertThat(unregistered).isSameAs(container); } + @Test + void verifyUnregisteredListenerContainer() { + KafkaListenerEndpointRegistry registry = new KafkaListenerEndpointRegistry(); + GenericApplicationContext applicationContext = new GenericApplicationContext(); + ConcurrentMessageListenerContainer listenerContainerMock = mock(ConcurrentMessageListenerContainer.class); + given(listenerContainerMock.getListenerId()).willReturn("testListenerContainer"); + applicationContext.registerBean(ConcurrentMessageListenerContainer.class, () -> listenerContainerMock); + applicationContext.refresh(); + registry.setApplicationContext(applicationContext); + // Lazy-load from application context + assertThat(registry.getUnregisteredListenerContainer("testListenerContainer")).isNotNull(); + // From internal map + assertThat(registry.getUnregisteredListenerContainer("testListenerContainer")).isNotNull(); + } + }