config>SecurityConfig에 다음 코드를 붙여놓는다.
@Configuration
@EnableSwagger2
public class SwaggerConfiguration {
@Bean
public Docket docket() {
return new Docket(DocumentationType.SWAGGER_2)
.useDefaultResponseMessages(false)
.apiInfo(apiInfo())
.select() //모든 경로의 api를 사용한다.
.apis(RequestHandlerSelectors.basePackage("com.example.umc3_teamproject"))
.paths(PathSelectors.any())
.build()
;
}
private ApiInfo apiInfo() {
return new ApiInfoBuilder()
.title("Web Application Api")
.description("설명 부분")
.version("1.0.0")
.build();
}
}
Build.gradle
implementation group: 'io.springfox', name: 'springfox-swagger2', version: '2.9.2'
implementation group: 'io.springfox', name: 'springfox-swagger-ui', version: '2.9.2'
Swagger와 @Bean annotation에 대한 설명
만약 SPRING 입문자라면, 이 코드는 말이 안된다고 생각할 수 있다. (나도 그랬다..)
이 코드는 어떤 곳에서도 가져다 쓰지 않는다.
코드들끼리 종속이 되고, 연결이 되어 최종적으로 main과도 하나로 이어져야 코드가 돌아가지 않는가? 라고 생각했다면, 이번이 swagger를 공부하면서 bean에 대해서도 공부할 수 있는 절호의 기회다..!!!
위에서 말한 것이 SPRING Bean이 가지는 가장 큰 특징이다.
@controller @service 모두 Bean의 일종으로, @bean은 Spring IoC 컨테이너에 의해 생성되고 관리된다. 따라서 위와 같이 독립적으로 사용될 수 있으며, Bean 선언 하나만으로 싱글톤으로 객체를 관리해준다.
구현 모습
우리가 따로 내용을 넣어주지 않아도 swagger에서 자동으로 위와 같이 어떤 controller에 어떤 api가 있는지 확인할 수 있다. 만약 위의 굵은 글씨 부분 이름을 따로 지정해주고 싶다면 아래와 같이 @Api annotation에 이름을 지정해주면 custom화하여 사용할 수 있다.
api를 누르면 어떤 method가 있는지 확인할 수 있고,
또 method를 누르면 어떤 Req body와 Res body가 있는지, 형태 또한 확인할 수 있어
일일히 노션에 type을 적어야 하는 불편함을 감수할 수 있다.
사실 이 데이터를 전달해주는 server쪽보다 client 쪽이 더 편하다고 느껴서 강추한다..!!
swagger 구현은 다음 동영상을 참고하였습니다.
'BackEnd > JAVA\SPRING' 카테고리의 다른 글
[SPRING+JAVA] Whisper API와 ChatGPT API 연동 (2) | 2023.06.29 |
---|---|
[Spring] Spring으로 JWT 구현하기2 - Spring Security 라이브러리 (0) | 2023.02.11 |
[SPRING] Spring으로 JWT 구현하기1 - jwt-java 라이브러리 (2) | 2023.02.09 |
[SPRING] SPRING 기초, SPRINGBOOT 프로젝트 폴더 구조 (0) | 2023.01.15 |
[JAVA] 우테코 2주차 과제 - 숫자 야구 게임 (0) | 2022.11.08 |