All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.gruelbox.tools.dropwizard.guice.Configured Maven / Gradle / Ivy

There is a newer version: 2.1.49
Show newest version
/**
 * dropwizard-guice-box
 * Copyright 2018-2019 Graham Crockford
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *    http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package com.gruelbox.tools.dropwizard.guice;

import com.google.inject.Module;
import com.gruelbox.tools.dropwizard.guice.resources.WebResource;

import io.dropwizard.Application;
import io.dropwizard.setup.Bootstrap;
import io.dropwizard.setup.Environment;

/**
 * Any Guice {@link Module} directly provided to {@link GuiceBundle} during the
 * {@link Application#initialize(io.dropwizard.setup.Bootstrap)} phase of
 * startup which supports this interface will be called back during the
 * {@link Application#run(io.dropwizard.Configuration, io.dropwizard.setup.Environment)}
 * phase, but prior to creation of the injector, to provide it with the
 * configuration.
 *
 * 

* Note that this should only be used where conditional bindings are * required - for example where you only want to make certain * {@link WebResource}s available, depending on configuration. *

* *

* For all other cases, remember that the configuration is bound and can be * injected at runtime without needing to pass it down the stack of * {@link Module}s during injector construction. *

* *

* Note that other startup resources such as {@link Bootstrap} and * {@link Environment} are deliberately not included here. The * {@code Environment} is explicitly a {@code run}-time resource and should be * injected, and {@code Bootstrap} can be accessed at the same time as creating * the {@link GuiceBundle} in {@link Application#initialize(Bootstrap)}. *

* * @author Graham Crockford * @param The application configuration class. */ public interface Configured { /** * Provides the configuration to a supporting {@link Module} prior * to injector creation. * * @param configuration The application configuration. */ void setConfiguration(T configuration); }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy