io.datakernel.di.annotation.Inject Maven / Gradle / Ivy
package io.datakernel.di.annotation;
import io.datakernel.di.util.ReflectionUtils;
import java.lang.annotation.Retention;
import java.lang.annotation.Target;
import static java.lang.annotation.ElementType.*;
import static java.lang.annotation.RetentionPolicy.RUNTIME;
/**
* This annotation is part of the injection DSL, it allows you to generate bindings
* using object constructors or static factory methods.
* By {@link io.datakernel.di.module.DefaultModule default} there is a {@link io.datakernel.di.core.BindingGenerator generator}
* present, that can generate missing bindings for injectable classes.
*
* This annotation can be put on the class itself - its default constructor is used for binding generation and must exist,
* on class constructor that will be used, or on factory method (static method with return type of that class).
*
* When a binding is generated, class methods and fields are scanned for the inject annotation and added as the binding dependencies -
* on instance creation fields will be injected and methods will be called with their parameters injected and return ignored.
* Name annotations on fields and method parameters will be considered.
*
* @see ReflectionUtils#generateImplicitBinding
*/
@Target({FIELD, CONSTRUCTOR, METHOD, TYPE})
@Retention(RUNTIME)
public @interface Inject {
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy