Skip to content

Commit e61cca7

Browse files
committed
Exclude ReactorAutoConfiguration from global lazy init
This commits registers LazyInitializationExcludeFilter to exclude ReactorAutoConfiguration from global lazy init Signed-off-by: Dmytro Nosan <[email protected]>
1 parent 099ad30 commit e61cca7

File tree

2 files changed

+23
-0
lines changed

2 files changed

+23
-0
lines changed

spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/reactor/ReactorAutoConfiguration.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,12 @@
1818

1919
import reactor.core.publisher.Hooks;
2020

21+
import org.springframework.boot.LazyInitializationExcludeFilter;
2122
import org.springframework.boot.autoconfigure.AutoConfiguration;
2223
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
2324
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
2425
import org.springframework.boot.context.properties.EnableConfigurationProperties;
26+
import org.springframework.context.annotation.Bean;
2527

2628
/**
2729
* {@link EnableAutoConfiguration Auto-configuration} for Reactor.
@@ -40,4 +42,9 @@ public class ReactorAutoConfiguration {
4042
}
4143
}
4244

45+
@Bean
46+
static LazyInitializationExcludeFilter reactorAutoConfigurationLazyInitializationExcludeFilter() {
47+
return LazyInitializationExcludeFilter.forBeanTypes(ReactorAutoConfiguration.class);
48+
}
49+
4350
}

spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/reactor/ReactorAutoConfigurationTests.java

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
import reactor.core.publisher.Mono;
2929
import reactor.util.context.Context;
3030

31+
import org.springframework.boot.LazyInitializationBeanFactoryPostProcessor;
3132
import org.springframework.boot.autoconfigure.AutoConfigurations;
3233
import org.springframework.boot.test.context.runner.ApplicationContextRunner;
3334

@@ -90,4 +91,19 @@ void shouldConfigurePropagationIfSetToAuto() {
9091
});
9192
}
9293

94+
@Test
95+
void shouldConfigurePropagationIfSetToAutoAndLazyInitializationIsEnabled() {
96+
AtomicReference<String> threadLocalValue = new AtomicReference<>();
97+
this.contextRunner.withPropertyValues("spring.reactor.context-propagation=AUTO")
98+
.withInitializer((applicationContext) -> applicationContext
99+
.addBeanFactoryPostProcessor(new LazyInitializationBeanFactoryPostProcessor()))
100+
.run((applicationContext) -> {
101+
Mono.just("test")
102+
.doOnNext((element) -> threadLocalValue.set(THREADLOCAL_VALUE.get()))
103+
.contextWrite(Context.of(THREADLOCAL_KEY, "updated"))
104+
.block();
105+
assertThat(threadLocalValue.get()).isEqualTo("updated");
106+
});
107+
}
108+
93109
}

0 commit comments

Comments
 (0)