-
-
Notifications
You must be signed in to change notification settings - Fork 0
NeuronDIForJavaSampleApplication
Christian Schlichtherle edited this page Dec 14, 2018
·
3 revisions
The following sample application is a canonical showcase for Neuron DI For Java. The target version is Neuron DI 6.0.0 - earlier versions will not work:
import global.namespace.neuron.di.java.*;
import java.util.concurrent.ThreadLocalRandom;
import java.util.function.Supplier;
import static java.lang.System.out;
@Neuron
@SuppressWarnings("unused")
public abstract class Application {
public static void main(String[] args) {
Incubator.breed(Application.class).run();
}
void run() {
out.println(supplier().get()); // e.g. 1314673780
out.println(supplier().get()); // e.g. 1575647352
out.println(random().get()); // e.g. -60158135
out.println(random().get()); // e.g. -2002476102
out.println(constant().get()); // e.g. 1365002845
out.println(constant().get()); // prints the same integer again, e.g 1365002845
}
@Caching
Supplier<?> supplier() {
return Incubator.wire(Supplier.class).using(this);
}
@Caching
Random random() {
return Incubator.wire(Random.class).using(this);
}
@Caching
Constant constant() {
return Incubator.wire(Constant.class).using(this);
}
// This is the common dependency:
int get() {
return ThreadLocalRandom.current().nextInt();
}
}
interface Random extends Supplier<Integer> {
}
@Neuron
interface Constant extends Supplier<Integer> {
@Caching
@Override
Integer get();
}