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}