Fork me on GitHub

After Injection callbacks

Let's start on defining an object type that requires dependency injection and that a callback has to be invoked once injection is complete:

import org.nnsoft.guice.lifegycle.AfterInjection;

@Singleton // not necessary, but let's add some spice
public class MyServiceImpl
{

    @Inject
    private Dependency dependency;

    // setter omitted for simplicity

    @AfterInjection
    public void init()
    {
        ...
    }

}

All users have to do, is adding the AfterInjectionModule when creating the Injector:

import static com.google.inject.Guice.createInjector;

import org.nnsoft.guice.lifegycle.AfterInjectionModule;

...

Injector injector = createInjector( new AfterInjectionModule(), ... );

Customization

The AfterInjectionModule module supports dynamic definition of the annotation has to be handled; let's replace the org.nnsoft.guice.lifegycle.AfterInjection with the javax.annotation.PostConstruct:

import javax.annotation.PostConstruct;

@Singleton // not necessary, but let's add some spice
public class MyServiceImpl
{

    @Inject
    private Dependency dependency;

    // setter omitted for simplicity

    @PostConstruct
    public void init()
    {
        ...
    }

}

then, create the Injector:

import static com.google.inject.Guice.createInjector;

import javax.annotation.PostConstruct;
import org.nnsoft.guice.lifegycle.AfterInjectionModule;

...

Injector injector = createInjector( new AfterInjectionModule( PostConstruct.class, Matchers.any() ), ... );