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;
008import javax.annotation.Nonnull;
009
010/**
011 * Qualify a service with a name.
012 */
013@Documented
014@Retention( RetentionPolicy.RUNTIME )
015@Target( { ElementType.PARAMETER, ElementType.METHOD, ElementType.TYPE } )
016public @interface Named
017{
018  /**
019   * An opaque string that qualifies the service.
020   * The string is user-supplied and used to distinguish two different services with the same type
021   * but different semantics.
022   *
023   * @return an opaque qualifier string or name.
024   */
025  @Nonnull
026  String value();
027}