From 8fbc6c51a970f16539ebaff924a80c3f5f5cebde Mon Sep 17 00:00:00 2001 From: Artem Bilan Date: Tue, 14 Dec 2021 10:53:11 -0500 Subject: [PATCH 1/2] GH-3694: Resolve circular dep in PublisherAnnBPP Fixes https://github.com/spring-projects/spring-integration/issues/3694 * Move check for `PublisherAnnotationBeanPostProcessor` bean into the `SmartInitializingSingleton.afterSingletonsInstantiated()` to break a circular dependency revealed in the `InitializingBean.afterPropertiesSet()` --- .../aop/PublisherAnnotationBeanPostProcessor.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/spring-integration-core/src/main/java/org/springframework/integration/aop/PublisherAnnotationBeanPostProcessor.java b/spring-integration-core/src/main/java/org/springframework/integration/aop/PublisherAnnotationBeanPostProcessor.java index a02c052f7af..ccd7cd23b0d 100644 --- a/spring-integration-core/src/main/java/org/springframework/integration/aop/PublisherAnnotationBeanPostProcessor.java +++ b/spring-integration-core/src/main/java/org/springframework/integration/aop/PublisherAnnotationBeanPostProcessor.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2019 the original author or authors. + * Copyright 2002-2021 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,6 +22,7 @@ import org.springframework.beans.factory.BeanNameAware; import org.springframework.beans.factory.InitializingBean; import org.springframework.beans.factory.NoUniqueBeanDefinitionException; +import org.springframework.beans.factory.SmartInitializingSingleton; /** * Post-processes beans that contain the @@ -40,7 +41,7 @@ */ @SuppressWarnings("serial") public class PublisherAnnotationBeanPostProcessor extends AbstractBeanFactoryAwareAdvisingPostProcessor - implements BeanNameAware, InitializingBean { + implements BeanNameAware, SmartInitializingSingleton { private String defaultChannelName; @@ -74,7 +75,7 @@ public void setBeanFactory(BeanFactory beanFactory) { } @Override - public void afterPropertiesSet() { + public void afterSingletonsInstantiated() { try { this.beanFactory.getBean(PublisherAnnotationBeanPostProcessor.class); } From 5789106c6a16946c10e8fb9d6a63bc7ca33224a4 Mon Sep 17 00:00:00 2001 From: Artem Bilan Date: Tue, 14 Dec 2021 10:57:05 -0500 Subject: [PATCH 2/2] * Fix unused import --- .../integration/aop/PublisherAnnotationBeanPostProcessor.java | 1 - 1 file changed, 1 deletion(-) diff --git a/spring-integration-core/src/main/java/org/springframework/integration/aop/PublisherAnnotationBeanPostProcessor.java b/spring-integration-core/src/main/java/org/springframework/integration/aop/PublisherAnnotationBeanPostProcessor.java index ccd7cd23b0d..15347f90fce 100644 --- a/spring-integration-core/src/main/java/org/springframework/integration/aop/PublisherAnnotationBeanPostProcessor.java +++ b/spring-integration-core/src/main/java/org/springframework/integration/aop/PublisherAnnotationBeanPostProcessor.java @@ -20,7 +20,6 @@ import org.springframework.beans.factory.BeanCreationException; import org.springframework.beans.factory.BeanFactory; import org.springframework.beans.factory.BeanNameAware; -import org.springframework.beans.factory.InitializingBean; import org.springframework.beans.factory.NoUniqueBeanDefinitionException; import org.springframework.beans.factory.SmartInitializingSingleton;