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 code generation (Java annotation processing). 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 * The aspect this component provides. 037 */ 038 String providesAspect() default ""; 039 040 /** 041 * The interfaces the bean implements. 042 */ 043 String[] provides() default {}; 044 045 /** 046 * The list of dependencies this bean requires. 047 */ 048 String[] dependsOn() default {}; 049 050 /** 051 * Type deemed to be reasonable to provide to external module. 052 * <p> 053 * Used to support multiple module wiring automatically (as alternative to using explicit InjectModule annotation). 054 */ 055 String autoProvides() default ""; 056 057}