진짜 개발자
본문 바로가기

FrameWork/Spring Boot (총 24개)

Spring Boot -Spring boot 2.2.5 File upload 문제 (stream ended unexpectedly, Required request part is not present) Spring Boot 2.2.5 FileUpload Error 새로운 서버를 구축하는 과정에서 file upload 중 발생한 에러를 해결한 과정을 정리해보려고 합니다. 문제상황이전 프로젝트(Photosend)에서 구축한 Server에는 File Upload 가 문제없이 이루어지는 반면, 새로 구축한 Server(TourCash)에서는 File Upload 시 Server측에서, File을 핸들러의 parameter로 맵핑하지 못하는 에러가 발생했습니다. 환경저의 개발 환경은 다음과 같았습니다. Photosend(이전 프로젝트) 와 Tourcash(현재 프로젝트)의 환경은 동일한 기술스택을 이용하여 구축하였습니다. Server- Spring BootFront- React-NativeInfra- AWS 사..
Spring Boot - Custom Validator를 생성해야하는 경우와 생성방법(Collection 검증) spring boot custom valid Spring Boot Custom Validator를 만들어 요청 값 검증하기 (Collection 검증시 발생하는 에러해결)Rest API 개발시, 사용자의 요청값을 검증해야 하는 경우가 발생합니다. 이미 Spring이 아닌 javax 에서 제공하는 어노테이션들이 있으며, Spring에서는 이 어노테이션이 부여된 값들을 검증하도록 구현할수 있습니다. 하지만, 기본으로 제공하는 어노테이션들로 우리의 복잡한 도메인의 모든 상황들을 검증 할 수는 없습니다. 따라서, 특정상황에서는 직접 Validator를 생성해야 합니다. 이번 포스팅에서는 Validator를 생성해야하는 경우를 알아보고, Validator를 직정 생성하도록 하겠습니다. 1. Custom Valid..
Spring Boot - 한글, 한자 인코딩(Encoding) 에러시 체크리스트! SpringBoot Db사용시 인코딩 이번 포스팅은 Spring Boot를 이용해 만들어진 어플리케이션 서버에서, DB에 값을 입력하는 경우 한자 또는 한글의 인코딩이 이루어지지 않았던 문제를 해결한 과정에대해 정리해보려 합니다. 문제상황제가 만든 어플리케이션은 중국인 관광객들을 대상으로하는 애플리케이션이었습니다. 중국인 관광객이 사진을 업로드하면, 그 사진에 대한 정보를 입력해주어야 하는 상황이었고, 이때 간체로 데이터를 입력해주어야 했습니다. 이를 SpringBoot로 만든 웹을 이용해서 입력하기로 했고, 입력한 결과 DataBase에서 간체를 인식하지 못하는 상황이 발생했습니다. 체크리스트1. Database(&& Table) Charset/Collation첫번째로 확인해보아야 할 것은 Databa..
Spring Boot - resourceLoader가 jar에 포함된 File을 찾지 못하는 에러(classPath 사용시 발생) ResourceLoader classPath롤 이용해 파일을 찾는 경우 getFile() 사용시 에러 ResourceLoader classPath롤 이용해 파일을 찾는 경우 getFile() 사용시 에러1. 상황상황은 이렇습니다. SpringBoot를 이용해 서버를 구축하는 도중 file을 가져와야할 상황이 발생했고, 해당 파일은 classpath를 통해 접근할 수 있도록, src/main/resources/ 경로에 포함시키기로 했습니다. 또한 classpath 에 존재하는 파일에 쉽게 접근할 수 있도록 Spring에서 제공하는 ResourceLoader를 이용하기로 했습니다. 위그림을 보면, resourceLoader를 통해 성공적으로 file을 불러온것을 볼 수 있습니다. 하지만, 이 프로그램을 ja..
Spring Boot - Profile에 따른 properties(yml) 파일 설정하기 1. properties 파일 관리의 불편함 이번 포스팅에서는 Spring에서 설정시 사용되는 application.properties를 활성화된 Profile에 따라 변경하여 적용하는 방법에대해 알아보도록 하겠습니다. Spring IOC 컨테이너의 기능(Environment , Profile) - https://galid1.tistory.com/514 profile에 대한 개념은 위의 글을 참조해주세요. 1. properties 파일 관리의 불편함기존 제가 운영하던 서버의 application.yml 파일입니다. 주석으로 처리됀 부분이 보이시나요?? 현재는 local에서 개발을 하고 있기 때문에, ssl설정을 잠시 주석으로 처리하고, port 역시 8080을 이용했습니다. 이렇게 이용을 하다가 배포를 ..
Spring Boot - Timezone을 설정한 채로 배포하기(-Duser.timezone을 사용하지 않고) Spring Boot에서 Timezone을 설정하여 배포하기 1. Timezone을 설정해야 했던 시나리오Spring Boot를 이용해 서버를 구축하고 있던 중, 특정 도메인이 시간에 종속되는 상황이었습니다. 때문에, Timezone에 의존할 수 밖에없었습니다. 도메인을 간략히 설명드리자면, 사용자가 회원가입을 할때, 오전 10시에서 오후 6시사이에만 가능하도록 해야했습니다. 위의 메소드는 해당 문제상황을 간단하게 재연한 로직입니다. register()는 사용자가 "/test" 엔드포인트로 접근했을때, 회원가입을 시도했다고 가정한 메소드입니다. 먼저 LocalDateTime.now().getHour()를 이용해 현재시간을 저장합니다. 그림에서 보시는바와 같이 현재 시간은 오후 1시 즉, 13시 이므로, ..
SpringBoot - REST API 인증 - 1 (Interceptor와 JwtToken을 이용한 App API 인증) interceptor, JWTTOken Spring Interceptor와 JWT Token을이용한 App(모바일) 인증 구현에 대해 알아보겠습니다. 이번 포스팅에서는 전체적인 App의 인증 과정에대한 시나리오를 알아보고, 사용자가 회원가입시 토큰을 저장하고, 로그인시 저장된 토큰을 받는 부분까지 구현해보도록 하겠습니다. https://galid1.tistory.com/755이 포스팅을 다 읽으셨다면 Refresh Token에 대해서도 공부해보시길 권장드립니다. 1. 환경IDEWebStormIntellij Build toolgradle FrameWorkSpring LanguageJAVA 2. 시나리오전체 시나리오사용자가 회원가입을 하면, auth0 JWT를 이용해 Token을 생성하여, 사용자의 데이터와..