mirror of
https://github.com/spring-projects/spring-boot.git
synced 2024-08-29 03:06:45 +08:00
Polish "Clarify edge case docs on ConditionalOnClass"
Closes gh-8185
This commit is contained in:
parent
08f8219248
commit
0a55e3e736
@ -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,14 +36,11 @@ import org.springframework.context.annotation.Conditional;
|
||||
public @interface ConditionalOnClass {
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 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
|
||||
* 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
|
||||
* <b>not</b> if this annotation is used as a composed, meta-annotation. If this
|
||||
* is used as a meta annotation and the given class is not available at runtime
|
||||
* then this {@link @Conditional} will effectively be ignored. In order to use
|
||||
* this annotation as a meta-annotation, only use the {@link #name} attribute.
|
||||
* <b>not</b> 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 {};
|
||||
|
@ -5839,16 +5839,18 @@ code by annotating `@Configuration` classes or individual `@Bean` methods.
|
||||
[[boot-features-class-conditions]]
|
||||
==== Class conditions
|
||||
The `@ConditionalOnClass` and `@ConditionalOnMissingClass` annotations allows
|
||||
configuration to be included based on the presence or absence of specific classes.
|
||||
If you are using the `@ConditionalOnClass` annotation directly on the class you are conditionally
|
||||
registering, you can actually use the `value` attribute to refer to the real class,
|
||||
even though that class might not actually appear on the running application classpath.
|
||||
This is due to the fact that annotation metadata directly on a class is parsed
|
||||
using http://asm.ow2.org/[ASM]. You can also use the `name` attribute if you prefer to
|
||||
specify the class name using a `String` value, which is required if you are using
|
||||
`@ConditionalOnClass` or `@ConditionalOnMissingClass` as apart of a meta-annotation to
|
||||
compose your own composed annotations or in an `@Bean` method as neither of these cases
|
||||
are handled by ASM.
|
||||
configuration to be included based on the presence or absence of specific classes. Due to
|
||||
the fact that annotation metadata is parsed using http://asm.ow2.org/[ASM] you can
|
||||
actually use the `value` attribute to refer to the real class, even though that class
|
||||
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.
|
||||
====
|
||||
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user