【问题标题】:Spring Boot Deployment StrategySpring Boot 部署策略
【发布时间】:2016-12-19 11:42:46
【问题描述】:

我正在使用 Spring Boot 实现 swagger 2。使用依赖项-

<dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger2</artifactId>
            <version>2.4.0</version>
        </dependency>
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger-ui</artifactId>
            <version>2.4.0</version>
        </dependency>

效果很好。但是想以这样的方式在生产中实现招摇 swagger 没有被部署。是否有可能以不同于在不同主机上构建应用程序的方式托管 swagger 构建?

【问题讨论】:

    标签: spring-boot swagger swagger-ui swagger-2.0 swagger-codegen


    【解决方案1】:

    有两种方法可以做到这一点。

    1. Maven 配置文件

      通过插入一个像'swagger'这样的maven配置文件并将springfox-swagger-ui相关的depdencenty添加到这个maven配置文件中。因为可能你需要在java代码中使用一些swagger注解,所以它不能消除springfox-swagger2的依赖。

    2. 弹簧配置(应该比选项1更好)

      对于标准的 spring-boot swagger2 配置类,例如您可以添加 @Profile("swagger") 注释以启用 swagger2 集成,只有在应用运行时添加 spring.profiles.active=swagger

    对于不同的主机,我对此一无所知,但据我了解,swagger 将选择所有的 spring boot 端点,所以假设你不能不理会它们。但是有一个library 可以提供一种在spring boot actuator 上发布springfox-swagger2 的方法。因此您可以在application.properties 中添加management.port=8181 属性以使spring-boot-actuator 在另一个TCP 端口上运行。

    【讨论】:

    • 感谢李平的回复。但是使用配置文件,带有注释@EnableSwagger2 的类仍然会被加载,并且默认情况下会激活swagger。
    • @Rameez 通过使用spring@Profile,如果对应的profile没有激活,bean就不会被处理。
    猜你喜欢
    • 1970-01-01
    • 2012-07-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-06
    • 2012-06-25
    • 2021-06-19
    • 2020-09-21
    相关资源
    最近更新 更多