Spring Boot/Swagger

[Spring] Swagger3 적용하기

sbs1621 2022. 7. 26. 18:00

먼저 build.gradle에 Swagger에 필요한 의존성을 주입해줍니다.

// Swagger
implementation 'io.springfox:springfox-boot-starter:3.0.0'

 

그리고 Application.yml에 아래의 코드를 추가해줍니다.

spring:
  mvc:
    pathmatch:
      matching-strategy: ant_path_matcher

 

그다음 SwaggerConfig.java를 추가합니다.

@Configuration
public class SwaggerConfig {
    @Bean
    public Docket api() {
        return new Docket(DocumentationType.OAS_30)
                .useDefaultResponseMessages(false)
                .select()
                .apis(RequestHandlerSelectors.basePackage("com.package.name.controller"))
                .paths(PathSelectors.any())
                .build()
                .apiInfo(apiInfo());
    }

    private ApiInfo apiInfo() {
        return new ApiInfoBuilder()
                .title("Swagger Test")
                .description("SwaggerConfig")
                .version("3.0")
                .build();
    }
}

 

그다음 스프링 시큐리티를 적용했다면 SecurityConfig에 아래의 코드를 추가해줍니다.

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http
                .csrf().disable()// CSRF 토큰 비활성
                .authorizeRequests()
                .antMatchers("/swagger-resources/**").permitAll()// swagger
                .antMatchers("/swagger-ui/**").permitAll() // swagger
                // 그 외 모든 요청은 인증과정 필요
                .anyRequest().authenticated();

        http.sessionManagement()
                .maximumSessions(1)
                .maxSessionsPreventsLogin(false);
    }

    @Override
    public void configure(WebSecurity web) throws Exception {

        web.ignoring().antMatchers("/static/css/**, /static/js/**, *.ico");
        // swagger
        web.ignoring().antMatchers(
                "/v3/api-docs",  "/configuration/ui",
                "/swagger-resources", "/configuration/security",
                "/swagger-ui.html", "/webjars/**","/swagger/**");
    }

 

이제 아래의 링크를 통해 접속할 수 있습니다.

Swagger 접속 완료