io.datakernel.di.annotation.Inject Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of datakernel-di Show documentation
Show all versions of datakernel-di Show documentation
DataKernel has an extremely lightweight DI with ground-breaking design principles.
It supports nested scopes, singletons, object factories, modules and plugins which
allow to transform graph of dependencies at startup time without any reflection.
The newest version!
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