diff --git a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/scheduling/TraceSchedulingAutoConfiguration.java b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/scheduling/TraceSchedulingAutoConfiguration.java index 45765ce35..065d89ced 100644 --- a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/scheduling/TraceSchedulingAutoConfiguration.java +++ b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/scheduling/TraceSchedulingAutoConfiguration.java @@ -29,7 +29,6 @@ import org.springframework.boot.context.properties.EnableConfigurationProperties import org.springframework.cloud.sleuth.autoconfig.TraceAutoConfiguration; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; -import org.springframework.context.annotation.EnableAspectJAutoProxy; /** * Registers beans related to task scheduling. @@ -40,7 +39,7 @@ import org.springframework.context.annotation.EnableAspectJAutoProxy; * @see TraceSchedulingAspect */ @Configuration(proxyBeanMethods = false) -@EnableAspectJAutoProxy +@ConditionalOnClass(name = "org.aspectj.lang.ProceedingJoinPoint") @ConditionalOnProperty(value = "spring.sleuth.scheduled.enabled", matchIfMissing = true) @ConditionalOnBean(Tracing.class) @AutoConfigureAfter(TraceAutoConfiguration.class) @@ -48,7 +47,6 @@ import org.springframework.context.annotation.EnableAspectJAutoProxy; public class TraceSchedulingAutoConfiguration { @Bean - @ConditionalOnClass(name = "org.aspectj.lang.ProceedingJoinPoint") public TraceSchedulingAspect traceSchedulingAspect(Tracer tracer, SleuthSchedulingProperties sleuthSchedulingProperties) { return new TraceSchedulingAspect(tracer, diff --git a/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/scheduling/TraceSchedulingAutoConfigurationTest.java b/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/scheduling/TraceSchedulingAutoConfigurationTest.java new file mode 100644 index 000000000..f187ad4e6 --- /dev/null +++ b/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/scheduling/TraceSchedulingAutoConfigurationTest.java @@ -0,0 +1,49 @@ +/* + * Copyright 2013-2019 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. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.springframework.cloud.sleuth.instrument.scheduling; + +import org.aspectj.lang.ProceedingJoinPoint; +import org.junit.jupiter.api.Test; + +import org.springframework.boot.autoconfigure.AutoConfigurations; +import org.springframework.boot.test.context.FilteredClassLoader; +import org.springframework.boot.test.context.runner.ApplicationContextRunner; +import org.springframework.cloud.sleuth.autoconfig.TraceAutoConfiguration; + +import static org.assertj.core.api.Assertions.assertThat; + +class TraceSchedulingAutoConfigurationTest { + + private final ApplicationContextRunner contextRunner = new ApplicationContextRunner() + .withConfiguration(AutoConfigurations.of(TraceAutoConfiguration.class, + TraceSchedulingAutoConfiguration.class)); + + @Test + void shoud_create_TraceSchedulingAspect() { + this.contextRunner.run(context -> assertThat(context) + .hasSingleBean(TraceSchedulingAspect.class)); + } + + @Test + void shoud_not_create_TraceSchedulingAspect_without_aspectJ() { + this.contextRunner + .withClassLoader(new FilteredClassLoader(ProceedingJoinPoint.class)) + .run(context -> assertThat(context) + .doesNotHaveBean(TraceSchedulingAspect.class)); + } + +}