package org.cryptocoinpartners.service;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
* Tagging an interface with @Service indicates that when implementations of the tagged interface
* are attached to a Context, the context will create a dependency injection binding between the
* interface type and the implementation type. For example:
*
* <pre>@Service
* interface MyService {}
*
* class MyServiceImpl implements MyService {}
*
*
* context.attach(MyServiceImpl.class);
* </pre>
*
* After this, any subsequent attachments will have their <pre>@Inject MyService foo;</pre> fields
* populated with an instance of MyServiceImpl. Use the @Singleton annotation to have one instance
* of the MyServiceImpl per Context. Otherwise, a new instance is created for every binding.
*
*
* @author Tim Olson
*/
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
public @interface Service {
}