Closed
Description
This allows plugins to add a 'default provider' (as a @Secondary
) that can be used when nothing else provides that dependency.
For example, Jsonb can have a plugin to use () -> Jsonb.builder().build()
as a provider like:
/**
* Plugin for avaje inject that provides a default Jsonb instance.
*/
public final class DefaultJsonbProvider implements io.avaje.inject.spi.Plugin {
@Override
public Class<?>[] provides() {
return new Class<?>[]{Jsonb.class};
}
@Override
public void apply(BeanScopeBuilder builder) {
builder.provideDefault(Jsonb.class, () -> Jsonb.builder().build());
}
}