xapi.annotation.inject.InstanceDefault Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of xapi-dev Show documentation
Show all versions of xapi-dev Show documentation
Everything needed to run a comprehensive dev environment.
Just type X_ and pick a service from autocomplete;
new dev modules will be added as they are built.
The only dev service not included in the uber jar is xapi-dev-maven,
as it includes all runtime dependencies of maven, adding ~4 seconds to build time,
and 6 megabytes to the final output jar size (without xapi-dev-maven, it's ~1MB).
The newest version!
package xapi.annotation.inject;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
* Used to link an instance implementation class to an injectable interface.
*
*
*
* There can be one and only one @InstanceDefault PER scope class;
*
* A ThreadLocal variable is used to affect what types are injected;
*
*
*
*
*
* Example:
*
*
*
* static interface MyService{}
*
*
*
* @SingletonDefault(implFor=MyService.class)
* static class MyServiceImpl implements MyService{}
*
*
*
* //returns a singleton instance of MyServiceImpl
*
* MyService service = X_Inject.singleton(MyService.class);
*
*
* @author James X. Nelson ([email protected], @james)
*/
@Target(value=ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
public @interface InstanceDefault {
/**
* @return - The class object for the instance / class the annotated type is implementing.
* Since your class must implement this interface, it must be on your classpath anyway ;)
*
*/
Class implFor();
}