2

私は現在、プロジェクトでSwagger2を試しています(それは素晴らしいですが)、それは私の@RestControllerクラスだけを取り上げます。Swagger2> SpringBoot MvcEndpointを文書化してください

私は思っていた:

  1. Spring-ActuatorMvcEndpointを拾うために使用することはできますか?
  2. server.portの代わりにmanagement port (e.g. http://${management.address}:${management.port})の下にSwagger2のコンポーネント(例:/swagger-ui.html/v2/api-docs)をホストすることはできますか?

Application.java

@EnableSwagger2 
@SpringBootApplication 
public class Application { 
    @Bean 
    public Docket api() { 
     return new Docket(DocumentationType.SWAGGER_2) 
       .select() 
       .apis(RequestHandlerSelectors.any()) 
       .paths(PathSelectors.any()) 
       .build(); 
    } 
} 

AdminController.java

@Component 
public class AdminController implements MvcEndpoint { ... } 

application.yml(カスタムアクチュエータエンドポイント別名)

server.port: 8080 
management.address: 127.0.0.1 
management.port: 8081 

build.gradle

compile("org.springframework.boot:spring-boot-starter-actuator") 
compile "io.springfox:springfox-swagger2:2.5.0" 
compile "io.springfox:springfox-swagger-ui:2.5.0" 

バージョン:

  • SpringBoot:1.4.0.RELEASE
  • のGradle:3.0

答えて

2

はい、それにトンをカスタマイズするeaiserですo「スプリング・ブート・スターター・アクチュエータ」の端点を選択します。

重要な点は、顧客のRequestHandlerSelectorsという述語を追加することです。com.example.Swagger2Config.RequestHandlerSelectorsは、スターターの良い例です。続き

は、コンフィギュレーションクラスです:

@Configuration 
@EnableSwagger2 
public class Swagger2Config { 
    @Bean 
    public Docket actuator() { 
     return new Docket(DocumentationType.SWAGGER_2) 
       .groupName("Spring Boot Actuator") 
       .select() 
       .apis(RequestHandlerSelectorsExt.withInterface()) 
       .paths(PathSelectors.any()) 
       .build(); 
    } 

    @Bean 
    public Docket api() { 
     return new Docket(DocumentationType.SWAGGER_2) 
       .groupName("App") 
       .select() 
       .apis(RequestHandlerSelectors.any()) 
       .paths(PathSelectors.any()) 
       .build(); 
    } 

    static class RequestHandlerSelectorsExt { 
     public static Predicate<RequestHandler> withInterface() { 
      return new Predicate<RequestHandler>() { 
       @Override 
       public boolean apply(RequestHandler input) { 
        return declaringClass(input) == EndpointMvcAdapter.class; 
       } 
      }; 
     } 

     private static Class<?> declaringClass(RequestHandler input) { 
      return input.getHandlerMethod().getMethod().getDeclaringClass(); 
     } 
    } 
} 

次にあなたが闊歩UIのAPIを取得することができます。 enter image description here

ここにはgithubのdemoプロジェクトがあります。

2)実際には、「address:port」の代わりに「address:port」でホストされていることが明らかです。このため。

+0

こんにちは、私は[管理ポート、つまりhttp:// $ {management.address}:$ {management.port} '](http://docs.spring.io/spring-boot/docs/ current/reference/html/production-ready-monitoring.html#production-ready-customizing-management-server-address)です。これは 'server.port'とは異なる場合があります。 –

+0

@NickGrealy私はあなたがそれをすることができないのですか? –

関連する問題