Skip to content

NeuronDIForJavaSampleApplication

Christian Schlichtherle edited this page Dec 14, 2018 · 3 revisions

Neuron DI For Java - Sample Application

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();
}
Clone this wiki locally