@Target(value={TYPE,METHOD}) @Retention(value=RUNTIME) @Documented @Conditional(value=org.springframework.boot.autoconfigure.condition.OnClassCondition.class) public @interface ConditionalOnClass
@Conditional that only matches when the specified classes are on
 the classpath.
 
 A Class value can be safely specified on
 @Configuration classes as the annotation metadata is parsed by using ASM before
 the class is loaded. If a class reference cannot be used then a name
 String attribute can be used.
 
 Note: Extra care must be taken when using @ConditionalOnClass on
 @Bean methods where typically the return type is the target of the condition.
 Before the condition on the method applies, the JVM will have loaded the class and
 potentially processed method references which will fail if the class is not present. To
 handle this scenario, a separate @Configuration class should be used to isolate
 the condition. For example: 
 @AutoConfiguration
 public class MyAutoConfiguration {
        @Configuration(proxyBeanMethods = false)
        @ConditionalOnClass(SomeService.class)
        public static class SomeServiceConfiguration {
                @Bean
                @ConditionalOnMissingBean
                public SomeService someService() {
                        return new SomeService();
                }
        }
 }public abstract Class<?>[] value
name() attribute.public abstract String[] name