001package io.avaje.inject;
002
003import static java.lang.annotation.ElementType.CONSTRUCTOR;
004import static java.lang.annotation.ElementType.FIELD;
005import static java.lang.annotation.ElementType.PARAMETER;
006import static java.lang.annotation.RetentionPolicy.SOURCE;
007
008import java.lang.annotation.Documented;
009import java.lang.annotation.Retention;
010import java.lang.annotation.Target;
011import java.lang.reflect.Type;
012
013/**
014 * Marks dependencies as an external beans potentially not managed by avaje inject. Compile-time
015 * validation will be disabled for types annotated.
016 *
017 * <p>The external dependency is usually expected to be provided by {@link
018 * BeanScopeBuilder#bean(String, Type, Object)} or by other modules in cases where ordering is
019 * irregular.
020 */
021@Documented
022@Retention(SOURCE)
023@Target({FIELD, PARAMETER, CONSTRUCTOR})
024public @interface External {}