16ab7e1f51fa83bb7b72881097fea9aa2c27a20b6crazyboblee/** 26ab7e1f51fa83bb7b72881097fea9aa2c27a20b6crazyboblee * Copyright (C) 2006 Google Inc. 36ab7e1f51fa83bb7b72881097fea9aa2c27a20b6crazyboblee * 46ab7e1f51fa83bb7b72881097fea9aa2c27a20b6crazyboblee * Licensed under the Apache License, Version 2.0 (the "License"); 56ab7e1f51fa83bb7b72881097fea9aa2c27a20b6crazyboblee * you may not use this file except in compliance with the License. 66ab7e1f51fa83bb7b72881097fea9aa2c27a20b6crazyboblee * You may obtain a copy of the License at 76ab7e1f51fa83bb7b72881097fea9aa2c27a20b6crazyboblee * 86ab7e1f51fa83bb7b72881097fea9aa2c27a20b6crazyboblee * http://www.apache.org/licenses/LICENSE-2.0 96ab7e1f51fa83bb7b72881097fea9aa2c27a20b6crazyboblee * 106ab7e1f51fa83bb7b72881097fea9aa2c27a20b6crazyboblee * Unless required by applicable law or agreed to in writing, software 116ab7e1f51fa83bb7b72881097fea9aa2c27a20b6crazyboblee * distributed under the License is distributed on an "AS IS" BASIS, 126ab7e1f51fa83bb7b72881097fea9aa2c27a20b6crazyboblee * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 136ab7e1f51fa83bb7b72881097fea9aa2c27a20b6crazyboblee * See the License for the specific language governing permissions and 146ab7e1f51fa83bb7b72881097fea9aa2c27a20b6crazyboblee * limitations under the License. 156ab7e1f51fa83bb7b72881097fea9aa2c27a20b6crazyboblee */ 166ab7e1f51fa83bb7b72881097fea9aa2c27a20b6crazyboblee 176ab7e1f51fa83bb7b72881097fea9aa2c27a20b6crazybobleepackage com.google.inject; 186ab7e1f51fa83bb7b72881097fea9aa2c27a20b6crazyboblee 196ab7e1f51fa83bb7b72881097fea9aa2c27a20b6crazyboblee/** 2061257a8bec21de3e0d473a8ec821b41f2e560017crazyboblee * A module contributes configuration information, typically interface 21b950ad91b9bddbe83718c8e67b04dac92e14f4dfkevinb * bindings, which will be used to create an {@link Injector}. A Guice-based 22c1d0c6490dbab5353323e8cc4e9a0e53fc4b1591crazyboblee * application is ultimately composed of little more than a set of 23c1d0c6490dbab5353323e8cc4e9a0e53fc4b1591crazyboblee * {@code Module}s and some bootstrapping code. 240bfdbc6f669cb5c3e57d4c3291dbeb573a5e1e52crazyboblee * 250bfdbc6f669cb5c3e57d4c3291dbeb573a5e1e52crazyboblee * <p>Your Module classes can use a more streamlined syntax by extending 260bfdbc6f669cb5c3e57d4c3291dbeb573a5e1e52crazyboblee * {@link AbstractModule} rather than implementing this interface directly. 2789046e7f9f9511de87d03dbd9284329b0c3ce22flimpbizkit * 2889046e7f9f9511de87d03dbd9284329b0c3ce22flimpbizkit * <p>In addition to the bindings configured via {@link #configure}, bindings 2989046e7f9f9511de87d03dbd9284329b0c3ce22flimpbizkit * will be created for all methods annotated with {@literal @}{@link Provides}. 3089046e7f9f9511de87d03dbd9284329b0c3ce22flimpbizkit * Use scope and binding annotations on these methods to configure the 3189046e7f9f9511de87d03dbd9284329b0c3ce22flimpbizkit * bindings. 326ab7e1f51fa83bb7b72881097fea9aa2c27a20b6crazyboblee */ 3363b592b8c307b6034d88602d136b61a46a8c3fb7crazybobleepublic interface Module { 346ab7e1f51fa83bb7b72881097fea9aa2c27a20b6crazyboblee 357c5b2c4e5e3607c63c2785c8bc025706a158db80crazyboblee /** 364994bf6a8e9986ca9013a908c340f019084be30flimpbizkit * Contributes bindings and other configurations for this module to {@code binder}. 37b3a8f0bda3259af41e639f1872c42377989704d9limpbizkit * 38b3a8f0bda3259af41e639f1872c42377989704d9limpbizkit * <p><strong>Do not invoke this method directly</strong> to install submodules. Instead use 39b3a8f0bda3259af41e639f1872c42377989704d9limpbizkit * {@link Binder#install(Module)}, which ensures that {@link Provides provider methods} are 40b3a8f0bda3259af41e639f1872c42377989704d9limpbizkit * discovered. 417c5b2c4e5e3607c63c2785c8bc025706a158db80crazyboblee */ 429d573ed1c5c3f2f5d72195e013cafd545ffe38fccrazyboblee void configure(Binder binder); 436ab7e1f51fa83bb7b72881097fea9aa2c27a20b6crazyboblee} 44