전체 글(355)
-
[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 -
[에러] java.io.FileNotFoundException: C:\Users\user\AppData\Local\Temp\tomcat-docbase.8080.16768757109457259434\upload\ae711ba2-12a4-4cad-9f3f-c6a861846112.mp3 (지정된 경로를 찾을 수 없습니다)
[Reason] 위와 같이 MP3 파일을 넣어서 getRealPath 를 통해 실제 업로드될 경로를 추출하고 multipartfile 에서 지원하는 transferTo 함수를 통해 경로로 파일을 보내게끔 만들어 주었는데 지정된 경로를 찾을 수 없다는 에러가 발생하였다. C:\Users\user\AppData\Local\Temp\tomcat-docbase.8080.16768757109457259434\upload\ae711ba2-12a4-4cad-9f3f-c6a861846112.mp3 내가 예상했던대로라면 프로젝트 내부 경로 (C:\MyProject\MusicIsMyLife\MusicIsMyLife\src\main\webapp\upload-music) 가 지정되야 했는데 위의 톰캣 temp 폴더 경로로 잡..
2023.09.13