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 * The type must be concrete and should have a single package-access constructor.
012 * The constructor can accept zero or more services as arguments. The constructor parameters
013 * can be explicitly annotated with a {@link Injector.Input} annotation otherwise the compiler will
014 * treat the parameter as if it was annotated with a {@link Injector.Input} annotation with default
015 * values for all the elements.
016 */
017@Target( ElementType.TYPE )
018@Retention( RetentionPolicy.RUNTIME )
019@Documented
020public @interface Injectable
021{
022}