diff --git a/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/condition/ConditionalOnClass.java b/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/condition/ConditionalOnClass.java index ebc959dbd3..a030852261 100644 --- a/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/condition/ConditionalOnClass.java +++ b/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/condition/ConditionalOnClass.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2015 the original author or authors. + * Copyright 2012-2017 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. @@ -36,9 +36,11 @@ import org.springframework.context.annotation.Conditional; public @interface ConditionalOnClass { /** - * The classes that must be present. Since this annotation parsed by loading class - * bytecode it is safe to specify classes here that may ultimately not be on the - * classpath. + * The classes that must be present. Since this annotation is parsed by loading class + * bytecode, it is safe to specify classes here that may ultimately not be on the + * classpath, only if this annotation is directly on the affected component and + * not if this annotation is used as a composed, meta-annotation. In order to + * use this annotation as a meta-annotation, only use the {@link #name} attribute. * @return the classes that must be present */ Class[] value() default {}; diff --git a/spring-boot-docs/src/main/asciidoc/spring-boot-features.adoc b/spring-boot-docs/src/main/asciidoc/spring-boot-features.adoc index cd7ba70bd3..a517bfd985 100644 --- a/spring-boot-docs/src/main/asciidoc/spring-boot-features.adoc +++ b/spring-boot-docs/src/main/asciidoc/spring-boot-features.adoc @@ -6168,6 +6168,13 @@ actually use the `value` attribute to refer to the real class, even though that might not actually appear on the running application classpath. You can also use the `name` attribute if you prefer to specify the class name using a `String` value. +[TIP] +==== +If you are using `@ConditionalOnClass` or `@ConditionalOnMissingClass` as apart of a +meta-annotation to compose your own composed annotations you must use `name` as referring +to the class in such a case is not handled. +==== + [[boot-features-bean-conditions]]