001package sting; 002 003import java.lang.annotation.Documented; 004import java.lang.annotation.ElementType; 005import java.lang.annotation.Retention; 006import java.lang.annotation.RetentionPolicy; 007import java.lang.annotation.Target; 008 009/** 010 * Identify a component type that Sting can create by invoking the constructor. 011 * This annotation is a top-level Sting processor entrypoint. 012 * 013 * <p>The type must be concrete and should have a single package-access constructor. The constructor 014 * can accept zero or more services as arguments. Constructor parameters may be qualified with 015 * {@link Named} and can be explicitly annotated with {@link Injector.Input}; otherwise the compiler 016 * will treat the parameter as if it was annotated with a {@link Injector.Input} annotation with 017 * default values for all the elements.</p> 018 * 019 * <p>When this annotation is present, Sting also actively processes {@link Named}, {@link Typed}, 020 * and {@link Eager} on the annotated type.</p> 021 */ 022@Target( ElementType.TYPE ) 023@Retention( RetentionPolicy.RUNTIME ) 024@Documented 025public @interface Injectable 026{ 027}