I am creating a Dropwizard application. I am using Guice for dependency injection as following.
public class NexusServiceApplication extends Application<NexusServiceConfiguration> {
public static void main(final String[] args) throws Exception {
new com.tarkshala.tavahot.NexusServiceApplication().run(args);
}
@Override
public String getName() {
return "NexusService";
}
@Override
public void initialize(final Bootstrap<NexusServiceConfiguration> bootstrap) {
bootstrap.addBundle(new SwaggerBundle<>() {
@Override
protected SwaggerBundleConfiguration getSwaggerBundleConfiguration(NexusServiceConfiguration configuration) {
return configuration.swaggerBundleConfiguration;
}
});
bootstrap.addBundle(GuiceBundle.builder()
.enableAutoConfig(getClass().getPackage().getName())
.modules(
// Nexus's local guice modules
new ServiceModule(nexusServiceConfiguration)
).build());
// Using to deserialize lower case enums from external service like payment gateway(CASHFREE)
bootstrap.getObjectMapper().enable(MapperFeature.ACCEPT_CASE_INSENSITIVE_ENUMS);
bootstrap.getObjectMapper().setSerializationInclusion(JsonInclude.Include.NON_NULL);
}
@Override
public void run(final NexusServiceConfiguration configuration,
final Environment environment) {
// Common resources registration
environment.jersey().packages(getClass().getPackage().getName());
}
}
My NexusServiceConfiguration looks like following:
@Data
public class NexusServiceConfiguration extends Configuration {
@JsonProperty("swagger")
public SwaggerBundleConfiguration swaggerBundleConfiguration;
@JsonProperty("sharded")
private ShardedHibernateFactory shardingConfig = new ShardedHibernateFactory();
@JsonProperty("rmqConfig")
private RMQConfig rmqConfig;
@JsonProperty("nexusActors")
private Map<ActionType, ActorConfig> nexusActors;
@JsonProperty("feedActors")
private Map<ActionType, ActorConfig> feedActors;
@JsonProperty("cashfreeHttpConfiguration")
private HttpConfiguration cashfreeHttpConfiguration;
}
My Guice module looks like following:
public class ServiceModule extends AbstractModule {
private NexusServiceConfiguration nexusServiceConfiguration;
public ServiceModule(NexusServiceConfiguration nexusServiceConfiguration) {
this.nexusServiceConfiguration = nexusServiceConfiguration;
}
@Provides
@Singleton
public HttpConfiguration provideCashfreeHttpConfiguration() {
return this.nexusServiceConfiguration.getCashfreeHttpConfiguration();
}
@Override
protected void configure() {
super.configure();
}
}
Is there a way to access nexusServiceConfiguration
in initialize method of application?