diff --git a/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/reactor/ReactorAutoConfiguration.java b/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/reactor/ReactorAutoConfiguration.java index 6baf2dbec37..41d77b94ce5 100644 --- a/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/reactor/ReactorAutoConfiguration.java +++ b/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/reactor/ReactorAutoConfiguration.java @@ -35,11 +35,11 @@ import reactor.spring.context.config.EnableReactor; */ @Configuration @ConditionalOnClass(EnableReactor.class) -@ConditionalOnMissingBean(Reactor.class) @AutoConfigureAfter(WebMvcAutoConfiguration.class) public class ReactorAutoConfiguration { @Bean + @ConditionalOnMissingBean(Reactor.class) public Reactor rootReactor(Environment environment) { return environment.getRootReactor(); } diff --git a/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/reactor/ReactorAutoConfigurationTests.java b/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/reactor/ReactorAutoConfigurationTests.java index dd0b38d558a..a84e5940810 100644 --- a/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/reactor/ReactorAutoConfigurationTests.java +++ b/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/reactor/ReactorAutoConfigurationTests.java @@ -16,12 +16,16 @@ package org.springframework.boot.autoconfigure.reactor; +import static org.junit.Assert.assertNotNull; + import org.junit.Test; import org.springframework.context.annotation.AnnotationConfigApplicationContext; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import reactor.core.Environment; import reactor.core.Reactor; - -import static org.junit.Assert.assertNotNull; +import reactor.core.spec.Reactors; /** * @author Dave Syer @@ -38,4 +42,21 @@ public class ReactorAutoConfigurationTests { this.context.close(); } + @Test + public void customReactor() { + this.context.register(TestConfiguration.class, ReactorAutoConfiguration.class); + this.context.refresh(); + assertNotNull(this.context.getBean(Reactor.class)); + this.context.close(); + } + + @Configuration + protected static class TestConfiguration { + + @Bean + public Reactor reactor(Environment env) { + return Reactors.reactor().env(env).dispatcher(Environment.RING_BUFFER).get(); + } + } + } diff --git a/spring-boot-cli/src/main/java/org/springframework/boot/cli/compiler/autoconfigure/ReactorCompilerAutoConfiguration.java b/spring-boot-cli/src/main/java/org/springframework/boot/cli/compiler/autoconfigure/ReactorCompilerAutoConfiguration.java index baec6158b43..287da499ddf 100644 --- a/spring-boot-cli/src/main/java/org/springframework/boot/cli/compiler/autoconfigure/ReactorCompilerAutoConfiguration.java +++ b/spring-boot-cli/src/main/java/org/springframework/boot/cli/compiler/autoconfigure/ReactorCompilerAutoConfiguration.java @@ -31,7 +31,8 @@ public class ReactorCompilerAutoConfiguration extends CompilerAutoConfiguration @Override public boolean matches(ClassNode classNode) { - return AstUtils.hasAtLeastOneAnnotation(classNode, "EnableReactor") || AstUtils.hasAtLeastOneFieldOrMethod(classNode, "Reactor"); + return AstUtils.hasAtLeastOneAnnotation(classNode, "EnableReactor") + || AstUtils.hasAtLeastOneFieldOrMethod(classNode, "Reactor"); } @Override @@ -43,15 +44,16 @@ public class ReactorCompilerAutoConfiguration extends CompilerAutoConfiguration @Override public void applyImports(ImportCustomizer imports) { - imports.addImports("reactor.core.Reactor", "reactor.event.Event", - "reactor.function.Consumer", "reactor.function.Functions", - "reactor.event.selector.Selectors", + imports.addImports("reactor.core.Reactor", "reactor.core.spec.Reactors", + "reactor.core.Observable", "reactor.event.Event", + "reactor.function.Functions", "reactor.function.Predicates", + "reactor.function.Suppliers", "reactor.spring.context.annotation.Consumer", "reactor.spring.context.annotation.Selector", "reactor.spring.context.annotation.SelectorType", "reactor.spring.context.annotation.ReplyTo", "reactor.spring.context.config.EnableReactor") - .addStarImports("reactor.event.Selectors") + .addStarImports("reactor.event.selector.Selectors") .addImport("ReactorEnvironment", "reactor.core.Environment"); }