Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/391.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在DropWizard中禁用Swagger捆绑包_Java_Rest_Swagger_Dropwizard - Fatal编程技术网

Java 在DropWizard中禁用Swagger捆绑包

Java 在DropWizard中禁用Swagger捆绑包,java,rest,swagger,dropwizard,Java,Rest,Swagger,Dropwizard,我希望根据配置值在生产环境中禁用招摇过市功能/端点 我该怎么办 我认为实现这一点的最佳方法是,当DropWizard应用程序首次启动时,不要在执行initialize方法期间添加捆绑包 此解决方案的问题是无法访问从YAML/YML文件中的值填充的配置get方法。这些值在应用程序到达run方法时可用 下面是我在application类中的初始化方法 @Override public void initialize(Bootstrap<Configuration> bootstrap)

我希望根据配置值在生产环境中禁用招摇过市功能/端点

我该怎么办

我认为实现这一点的最佳方法是,当DropWizard应用程序首次启动时,不要在执行initialize方法期间添加捆绑包

此解决方案的问题是无法访问从YAML/YML文件中的值填充的配置get方法。这些值在应用程序到达run方法时可用

下面是我在application类中的初始化方法

@Override
public void initialize(Bootstrap<Configuration> bootstrap) {
    LOGGER.debug("initialize");
    bootstrap.setConfigurationSourceProvider(new SubstitutingSourceProvider(bootstrap.getConfigurationSourceProvider(),
            new EnvironmentVariableSubstitutor(false)));

    bootstrap.addBundle(new SwaggerBundle<Configuration>() {
        @Override
        protected SwaggerBundleConfiguration getSwaggerBundleConfiguration(Configuration configuration) {
            return configuration.swaggerBundleConfiguration;
        }
    });
}
@覆盖
公共无效初始化(引导引导引导){
调试(“初始化”);
bootstrap.setConfigurationSourceProvider(新的替换资源提供程序)(bootstrap.getConfigurationSourceProvider(),
新的EnvironmentVariableSubstitutor(false));
addBundle(新的SwaggerBundle(){
@凌驾
受保护的SwaggerBundleConfiguration getSwaggerBundleConfiguration(配置){
返回配置.swaggerBundleConfiguration;
}
});
}
如果我需要进一步澄清,请让我知道


提前感谢。

您可以在生产中设置一个环境变量,并使用它来决定是否包括SwaggerBundle。例如:

if (!"prod".equalsIgnoreCase(System.getenv("ENVIRONMENT"))) {
  bootstrap.addBundle(new SwaggerBundle<Configuration>() { ... }
}
if(!“prod.equalsIgnoreCase(System.getenv(“环境”)){
addBundle(新的SwaggerBundle(){…}
}

当时我使用的是旧版本的DropWizard

更新后,出现了新方法,包括setIsEnabled()

这是为了解决这个问题而添加的

bootstrap.addBundle(new SwaggerBundle<Configuration>() {
        @Override
        protected SwaggerBundleConfiguration getSwaggerBundleConfiguration(Configuration configuration) {
            if(!configuration.getSwaggerEnabled()){
                configuration.swaggerBundleConfiguration.setIsEnabled(false);
            }
            return configuration.swaggerBundleConfiguration;
        }
    });
}
bootstrap.addBundle(新的SwaggerBundle(){
@凌驾
受保护的SwaggerBundleConfiguration getSwaggerBundleConfiguration(配置){
如果(!configuration.getSwaggerEnabled()){
configuration.swaggerBundleConfiguration.setIsEnabled(false);
}
返回配置.swaggerBundleConfiguration;
}
});
}
谢谢