content: package com.kefu.common.annotation;
  
  import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
  import org.springframework.boot.autoconfigure.SpringBootApplication;
  import org.springframework.context.annotation.ComponentScan;
  import org.springframework.core.annotation.AliasFor;
  
  import java.lang.annotation.Documented;
  import java.lang.annotation.ElementType;
  import java.lang.annotation.Inherited;
  import java.lang.annotation.Retention;
  import java.lang.annotation.RetentionPolicy;
  import java.lang.annotation.Target;
  
  /**
   * @author feng
   * @date 2019-06-11
   */
  @Target(ElementType.TYPE)
  @Retention(RetentionPolicy.RUNTIME)
  @Documented
  @Inherited
  @SpringBootApplication
  public @interface EnableKefuApplication {
  
      /**
       * Exclude specific auto-configuration classes such that they will never be applied.
       *
       * @return the classes to exclude
       */
      @AliasFor(annotation = EnableAutoConfiguration.class)
      Class<?>[] exclude() default {};
  
      /**
       * Exclude specific auto-configuration class names such that they will never be
       * applied.
       *
       * @return the class names to exclude
       * @since 1.3.0
       */
      @AliasFor(annotation = EnableAutoConfiguration.class)
      String[] excludeName() default {};
  
      /**
       * Base packages to scan for annotated components. Use {@link #scanBasePackageClasses}
       * for a type-safe alternative to String-based package names.
       *
       * @return base packages to scan
       * @since 1.3.0
       */
      @AliasFor(annotation = ComponentScan.class, attribute = "basePackages")
      String[] scanBasePackages() default {"com.kefu"};
  
      /**
       * Type-safe alternative to {@link #scanBasePackages} for specifying the packages to
       * scan for annotated components. The package of each class specified will be scanned.
       * <p>
       * Consider creating a special no-op marker class or interface in each package that
       * serves no purpose other than being referenced by this attribute.
       *
       * @return base packages to scan
       * @since 1.3.0
       */
      @AliasFor(annotation = ComponentScan.class, attribute = "basePackageClasses")
      Class<?>[] scanBasePackageClasses() default {};
  
  }
  