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}