기술 창고(246)
-
[Spring Boot] Springdoc-openapi Swagger 적용 (+ JWT 사용 시 적용법)
백엔드 개발 후 프론트와 원활한 협업을 위해 Api 문서화 작업이 필요합니다. 따라서 가장 흔히 볼 수 있는 Swagger를 적용하는 방법에 대해서 알아보겠습니다. ! 저는 gradle 환경입니다. 1. Build.Gradle 디펜던시 import // Swagger implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.2.0' Swagger 디펜던시를 받아줍니다. Swagger에는 Springdoc, Springfox 이 두 가지가 대표적으로 있는 것으로 알고있는데 Springdoc 를 사용해야 하는 것이 좋습니다. Springdoc는 지속적으로 오늘날까지 계속 지원해주고 업데이트되고 있지만 Springfox의 경우에는 업데이트가 중단..
2023.10.04 -
[Spring Boot] 구글 Oauth2 인증 및 구글 소셜 로그인 기능 구현
이전에는 구글 로그인을 구현하기 위해 선행되어야할 구글 쪽 Oauth 클라이언트를 생성하는 과정을 정리해보았습니다. 이번에는 만든 구글 클라이언트를 이용하여 본격적으로 구글 소셜 로그인을 구현해보도록 하겠습니다. 우선 저는 구글 로그인을 적용시키기 이전에 Spring Security 와 JWT 를 사용함으로서 기본적인 사용자들에 대한 관리를 수행하고 있다는 전제를 깔아두도록 하겠습니다. 즉, JWT, Spring Security에 대한 설정은 각자 해놓은 뒤에 거기에 맞게끔 본 내용을 수정시켜가며 적용해야 합니다. 대표적으로 JWTTokenProvider 와 같은 클래스 파일들이 그 예입니다. 혹시 모르니 제가 세팅한 JWT, Spring Security 관련 설정 파일들도 올리겠습니다. # JWT, S..
2023.09.20 -
Oauth2 구글 로그인 인증 (클라이언트 ID 발급)
개발을 진행하다보면 소셜 로그인 기능들을 자주 만들어야 되는 상황이 오는데 이중에서 구글은 가장 자주 개발 요청이 들어오는 소셜인 것 같습니다. 구체적으로 제가 주로 개발을 진행하는 java, Spring 에서 어떻게 적용해야 되고 개발을 해야되는지는 이 다음에 정리하도록 하고 이번에는 개발을 진행하기 이전에 선행적으로 구글 쪽에 요청하고 설정해야되는 부분들을 정리해보도록 하겠습니다. https://console.cloud.google.com Google 클라우드 플랫폼 로그인 Google 클라우드 플랫폼으로 이동 accounts.google.com 우선 당연하게도 구글 로그인을 만들려면 구글 측의 허가가 필요합니다. 위의 사이트에 접속해서 계정이 없다면 계정을 만들어주도록 합니다. 계정을 만들고 난 이..
2023.09.18 -
[Spring Boot] mp3 파일 정보 추출
음악 플랫폼을 만들어보고 싶은 생각이 들어서 음악 등록 api를 만들게 되었습니다. 내부 라이브러리를 사용하면 mp3 파일의 가사, 아티스트와 같은 정보들을 추출할 수 없기 때문에 외부의 라이브러리를 사용하게 되었습니다. https://mvnrepository.com/artifact/net.jthink/jaudiotagger/3.0.1 다양한 라이브러리가 있겠지만 저는 jaudiotagger 를 사용해주었습니다. maven repository 에서 jaudiotagger 를 가져와서 build.gradle에 넣어주었습니다. 이제 api를 구현하는 것부터 음악 파일을 넣는 과정까지 차례대로 정리해보겠습니다. Music @NoArgsConstructor @AllArgsConstructor @Builder @..
2023.09.13 -
[Spring Boot] JPA 엔티티 String 속성을 더욱 큰 속성으로 변경
@Column(nullable = false) private String lyrics; // 가사 보통 엔티티 속성을 지정할 때 텍스트 속성들은 String 타입 변수로 지정해준 뒤, Column 어노테이션을 붙이고 끝납니다. 이 String은 DB에 적용되게 되면 varchar 타입이게 되는데, varchar의 크기를 임의로 지정해줄 수 있습니다. @Column(nullable = false, length = 20) private String lyrics; // 가사 이런식으로 length 옵션 값을 부여하여 크기를 지정해줄 수 있습니다. 위의 코드에서는 length = 20을 부여했기 때문에 DB에서도 확인해보면 varchar(20) 으로 지정되게 됩니다. 만약, length 옵션 값을 지정하지 않았..
2023.09.13 -
[Spring Boot] Spring Boot 3.XX 버전 이상 QueryDSL 설정 및 실행 과정
저는 Spring Boot를 사용하여 개발을 진행할 때 보통 QueryDSL을 자주 애용하는 편입니다. 흔히 사용하는 JPA의 경우에는 사용 방법이 많이 알려져있기도 하고 가장 대중적인 데이터 관리 / 사용 기술이라고 볼 수 있겠지만 복잡한 조건의 데이터를 사용해야할 때 사용하기 번거롭다는 단점이 존재하고, JPA 함수를 사용할 때 아무래도 쿼리문 형태가 아닌 함수 형식이다 보니 사용할 때마다 매번 찾아보거나 해야하기 때문에 불편하다고 느꼈습니다. MyBatis의 경우에는 옛날부터 많이 사용했던 데이터 기술이긴 하지만 오래된 기술이니만큼 개인적으로 사용하고 싶지 않았습니다. 또한, MyBatis를 사용하게 되면 Mapper 라고 하는 xml로 쿼리문을 따로 관리해줘야하거나 추가로 DAO를 만들어주어야 하..
2023.09.11