본문 바로가기
백엔드/Spring

spring boot 3.2.5 & jdk 21 에서 swagger 사용하기

by leejiwoo21 2024. 4. 29.

springboot의 현 권장버전 3.2.5 / jdk 21 / gradle 8.7버전을 사용하다가 널리 퍼져있는 swagger의 2.9.2을 사용법을 적용하니 버전 오류가 발생하더라

 

따라서 아래 블로그를 참고하여 openapi의 2.0.2 버전으로 이를 해결했다.

 

[Spring] Spring boot 3.2.0에서 Spring Open API 이용하여 Swagger 적용하기

📂Spring boot 3 이상에서 Swagger 사용하기 이전 프로젝트를 진행할 때, Springfox swagger 의존성을 추가하여서 Swagger를 사용했다. 하지만 이번 프로젝트를 진행할 때는 계속 에러가 났다. 의존성을 추가

velog.io

 

Swagger태스트를 위한 프로젝트 구성 

 

 

build.gradle

plugins {
	id 'java'
	id 'org.springframework.boot' version '3.2.5'
	id 'io.spring.dependency-management' version '1.1.4'
}

group = 'com.example'
version = '0.0.1-SNAPSHOT'


java {
	sourceCompatibility = '21'
}

configurations {
	compileOnly {
		extendsFrom annotationProcessor
	}
}

repositories {
	mavenCentral()

}

dependencies {
	implementation 'org.springframework.boot:spring-boot-starter-web'
	compileOnly 'org.projectlombok:lombok'
	annotationProcessor 'org.springframework.boot:spring-boot-configuration-processor'
	annotationProcessor 'org.projectlombok:lombok'
	testImplementation 'org.springframework.boot:spring-boot-starter-test'

	// 스웨거 사용 의존성
	implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.0.2'
}

tasks.named('test') {
	useJUnitPlatform()
}

 

 

SwaggerConfig

package com.example.swaggertest.common;

import io.swagger.v3.oas.annotations.OpenAPIDefinition;
import io.swagger.v3.oas.annotations.info.Info;
import lombok.RequiredArgsConstructor;
import org.springdoc.core.models.GroupedOpenApi;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@OpenAPIDefinition(
        info = @Info(title = "Sample API",
                description = "Swagger 테스트.",
                version = "v1"))
@RequiredArgsConstructor

@Configuration
public class SwaggerConfig{

    @Bean
    public GroupedOpenApi SampleUserOpenApi() {
        String[] paths = {"/study/**"};

        return GroupedOpenApi.builder()
                .group("com.example")
                .pathsToMatch(paths)
                .build();
    }
}

 

 

StudyController

package com.example.swaggertest.controller;


import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/study")
public class StudyController {

    @GetMapping("/test")
    public String test(){
        return " Hello. World";
    }
}

 

 

 

 

'백엔드 > Spring' 카테고리의 다른 글

spring boot 공식문서 주소  (0) 2024.04.30
spring boot의 핵심 라이브러리  (0) 2024.04.30
Gradle의 dependancies  (0) 2024.04.30
SNAPSHOT이란?  (0) 2024.04.30
Java 1일차에게 Gradle이란?  (0) 2024.04.30

댓글