001package io.avaje.inject.spi;
002
003/**
004 * This is the service loader interface defining the bean scope.
005 */
006public interface BeanScopeFactory {
007
008  /**
009   * Return the name of the bean scope (module) this will create.
010   */
011  String getName();
012
013  /**
014   * Return the name of module features this module provides.
015   */
016  String[] getProvides();
017
018  /**
019   * Return the names of bean scopes (modules) that this is dependent on (they need to be built before this one).
020   */
021  String[] getDependsOn();
022
023  /**
024   * Build all the beans.
025   */
026  void build(Builder builder);
027}