001package io.avaje.inject.spi;
002
003import java.lang.annotation.ElementType;
004import java.lang.annotation.Retention;
005import java.lang.annotation.RetentionPolicy;
006import java.lang.annotation.Target;
007
008/**
009 * Hold bean dependency metadata intended for internal use by the annotation processor.
010 */
011@Target(ElementType.METHOD)
012@Retention(RetentionPolicy.CLASS)
013public @interface DependencyMeta {
014
015  /**
016   * The bean type.
017   */
018  String type();
019
020  /**
021   * The qualified name of the dependency being provided.
022   */
023  String name() default "";
024
025  /**
026   * True when the component has been imported.
027   */
028  boolean importedComponent() default false;
029
030  /**
031   * The bean factory method (for <code>@Bean</code> annotated methods).
032   */
033  String method() default "";
034
035  /**
036   * Types deemed to be reasonable to provide to external module.
037   *
038   * <p>Used to support multiple module wiring automatically (as alternative to using explicit
039   * InjectModule annotation).
040   */
041  String[] provides() default {};
042
043  /**
044   * The list of dependencies this bean requires.
045   */
046  String[] dependsOn() default {};
047
048}