001package io.avaje.inject.spi; 002 003import io.avaje.inject.BeanScopeBuilder; 004 005import java.lang.reflect.Type; 006 007/** 008 * A Plugin that can be applied when creating a bean scope. 009 * <p> 010 * Typically, a plugin might provide a default dependency via {@link BeanScopeBuilder#provideDefault(Type, java.util.function.Supplier)}. 011 */ 012public interface Plugin { 013 014 /** 015 * Return the classes that the plugin provides. 016 */ 017 Class<?>[] provides(); 018 019 /** 020 * Apply the plugin to the scope builder. 021 */ 022 void apply(BeanScopeBuilder builder); 023}