001package io.avaje.inject.spi; 002 003/** 004 * A Module that can be included in BeanScope. 005 */ 006public interface Module { 007 008 /** 009 * Return the types this module needs to be provided externally or via other modules. 010 */ 011 Class<?>[] requires(); 012 013 /** 014 * Return the set of types this module explicitly provides to other modules. 015 */ 016 Class<?>[] provides(); 017 018 /** 019 * Build all the beans. 020 */ 021 void build(Builder builder); 022 023 /** 024 * Marker for custom scoped modules. 025 */ 026 interface Custom extends Module { 027 028 } 029}