Skip to content

ENH: Add Plugin API for 'default providers' and BeanScopeBuilder.provideDefault() methods #258

Closed
@rbygrave

Description

@rbygrave

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());
  }
}

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions