본문 바로가기
스프링부트

[Springboot] swagger3.0.0 No operations defined in spec!

스프링부트 2.5.6  그래들 7.2 버전

Swagger3.0.0 설치 후 아래와 같이 설정하면

@Bean
public Docket api() {
    return new Docket(DocumentationType.OAS_30) // open api spec 3.0
            .select()
            .apis(RequestHandlerSelectors.any())
            .paths(PathSelectors.any())
            .build();
}

기본으로 보이는 api들만 보이고 내가 작성한 controller 파일들이 보이지 않는 일이 발생.

아래처럼 컨트롤러 패키지를 직접 지정하는 방식으로 api를 보이게 작성했다.

 

@Bean
public Docket api() {
    return new Docket(DocumentationType.OAS_30) // OAS 3
            .useDefaultResponseMessages(false)
            .select()
            .apis(RequestHandlerSelectors.basePackage("com.~~~.~~~.controller")) // controller가 있는 패키지 지정 basePackage
            .paths(PathSelectors.any())
            .build()
            .apiInfo(apiInfo());
}

그러나 api들이 아무것도 보이지 않고 No operations defined in spec! 만 보이는 상황이 발생.

패키지 지정이 잘못된건 알겠으나 해결을 어떻게 할지 모르겠어서 구글링을 통해 해결책을 발견했다.

 

1. basePackage("패키지경로") 변경

  basePackage(com.~~~.~~~.controller) 에서 basePackage("") 로 변경한다.

basePackage("") 로 지정

 

2. main 메소드가 있는 Aplication 클래스에 

@ComponentScan(basePackages = {"컨트롤러경로"})
public class McallApplication {

    public static void main(String[] args) {
        SpringApplication.run(McallApplication.class, args);
    }

}

 컴포넌트 스캔으로 컨트롤러 패키지를 따로 지정해준다. 그러면 basePackage("")로 잡히게 된다.

 

 

설정 후 성공한 모습