본문 바로가기

FrameWork/Spring Boot

SpringBoot - 한글, 한자 인코딩(Encoding) 에러시 체크리스트! SpringBoot Db사용시 인코딩 이번 포스팅은 Spring Boot를 이용해 만들어진 어플리케이션 서버에서, DB에 값을 입력하는 경우 한자 또는 한글의 인코딩이 이루어지지 않았던 문제를 해결한 과정에대해 정리해보려 합니다. 문제상황제가 만든 어플리케이션은 중국인 관광객들을 대상으로하는 애플리케이션이었습니다. 중국인 관광객이 사진을 업로드하면, 그 사진에 대한 정보를 입력해주어야 하는 상황이었고, 이때 간체로 데이터를 입력해주어야 했습니다. 이를 SpringBoot로 만든 웹을 이용해서 입력하기로 했고, 입력한 결과 DataBase에서 간체를 인식하지 못하는 상황이 발생했습니다. 체크리스트1. Database(&& Table) Charset/Collation첫번째로 확인해보아야 할 것은 Databa..
작성일: 2020. 1. 17. 11:05
SpringBoot - resourceLoader가 jar에 포함된 File을 찾지 못하는 에러(classPath 사용시 발생) ResourceLoader classPath롤 이용해 파일을 찾는 경우 getFile() 사용시 에러 ResourceLoader classPath롤 이용해 파일을 찾는 경우 getFile() 사용시 에러1. 상황상황은 이렇습니다. SpringBoot를 이용해 서버를 구축하는 도중 file을 가져와야할 상황이 발생했고, 해당 파일은 classpath를 통해 접근할 수 있도록, src/main/resources/ 경로에 포함시키기로 했습니다. 또한 classpath 에 존재하는 파일에 쉽게 접근할 수 있도록 Spring에서 제공하는 ResourceLoader를 이용하기로 했습니다. 위그림을 보면, resourceLoader를 통해 성공적으로 file을 불러온것을 볼 수 있습니다. 하지만, 이 프로그램을 ja..
작성일: 2020. 1. 8. 17:17
SpringBoot - 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을 이용했습니다. 이렇게 이용을 하다가 배포를 ..
작성일: 2019. 11. 28. 17:03
SpringBoot - Timezone을 설정한 채로 배포하기(-Duser.timezone을 사용하지 않고) Spring Boot에서 Timezone을 설정하여 배포하기 1. Timezone을 설정해야 했던 시나리오Spring Boot를 이용해 서버를 구축하고 있던 중, 특정 도메인이 시간에 종속되는 상황이었습니다. 때문에, Timezone에 의존할 수 밖에없었습니다. 도메인을 간략히 설명드리자면, 사용자가 회원가입을 할때, 오전 10시에서 오후 6시사이에만 가능하도록 해야했습니다. 위의 메소드는 해당 문제상황을 간단하게 재연한 로직입니다. register()는 사용자가 "/test" 엔드포인트로 접근했을때, 회원가입을 시도했다고 가정한 메소드입니다. 먼저 LocalDateTime.now().getHour()를 이용해 현재시간을 저장합니다. 그림에서 보시는바와 같이 현재 시간은 오후 1시 즉, 13시 이므로, ..
작성일: 2019. 10. 5. 13:23
SpringBoot - Interceptor와 JwtToken을 이용한 App API 요청 인증 interceptor, JWTTOken Spring Interceptor와 JWT Token을이용한 App(모바일) 인증 구현에 대해 알아보겠습니다. 이번 포스팅에서는 전체적인 App의 인증 과정에대한 시나리오를 알아보고, 사용자가 회원가입시 토큰을 저장하고, 로그인시 저장된 토큰을 받는 부분까지 구현해보도록 하겠습니다. 1. 환경IDEWebStormIntellij Build toolgradle FrameWorkSpring LanguageJAVA 2. 시나리오전체 시나리오사용자가 회원가입을 하면, auth0 JWT를 이용해 Token을 생성하여, 사용자의 데이터와 함께 저장합니다. 사용자가 ID, PW을 이용해 로그인을 하게되면, 서버에서 사용자의 Token을 반환해줍니다. Client측에서, Token..
작성일: 2019. 9. 17. 23:29
SpringBoot - KAKAO AccessToken 발급 받기 (자세한 설명) KAKAO API 이용하기 이번 포스팅은 KAKAO API를 이용해 REST API를 개발하기 위해, AccessToken을 발급 받는 과정에 대해 알아보도록 하겠습니다. Oauth2 인증과정https://galid1.tistory.com/106우선 Oauth에 대해 잘 모르신다면 위 링크를 참고하여 Oauth개념을 먼저 숙지하신 후 진행하시는 것을 추천드립니다. 1. 과정 요약과정에대해 대략적인 설명을 먼저 드린 후 실습을 하는것이 진행하시는데 도움이 될것 같아 먼저 과정에 대해 설명드리겠습니다. 1. KAKAO API 사용을 위한 준비우선 첫째로, KAKAO API 사용을 위해, KAKAO Developers에 가입을 한 뒤, 우리가 사용할 App을 등록해야 합니다. 악의적인 다른 앱들이 우리 앱인것..
작성일: 2019. 8. 31. 22:46
SpringBoot - Let's Encrypt로 무료 SSL인증서를 발급받아 SpringBoot에 적용하기 lets encrypt 이번 포스팅에서는 Springboot에 HTTPS를 구축하는 방법을 알아보도록 하겠습니다. 그동안은 서비스를 출시 하더라도 HTTP로 출시하는 경우가 많았는데요, 이번 백엔드 구축시에는 클라이언트에서 보안상의 이유로 HTTP에 Fetch 요청을 보내지 못하는 상황이 발생하여, HTTPS를 구축해야하는 차에 무료 SSL 인증서 발급 방법을 찾아내어, 무료로 SSL 인증서 발급받는 방법에 대해 포스팅을 하려고 합니다. SSL, HTTPS, CA 개념https://galid1.tistory.com/602이번 포스팅은 SSL, HTTPS, CA에 대한 개념을 가지고 계시다는 전제하에 진행을 하도록 하겠습니다. 잘 모르시다면 위 링크를 참고해주세요. Let's Encrypt 등장배경기존의 ..
작성일: 2019. 8. 8. 21:55
SpringBoot - SpringBoot H2 연결방법(H2 웹콘솔) 1. H2 DB란 SpringBoot에서 H2 DB를 사용하는 방법을 알아보도록 하겠습니다. 1. H2 DB란역시 우선은, H2 DB가 무엇인지부터 간단히 알아보는게 좋을것 같습니다. H2 란?H2DB는 JAVA기반의 RDBMS입니다. 특징별도의 설치과정이 없고, 저용량에 가볍고 빠르고 JDBC를 지원합니다. 따라서 개발 및 테스트용으로 많이 사용됩니다. Mode Server mode는 다른 RDBMS처럼 데이터를 실제로 저장함으로써, 다른 사용자들이 접속할 수 있으며, server와 API등에서 접속할 필요성이 있을때 사용합니다.Embedded mode는 JDBC를 사용해 동일한 JVM에서 데이터베이스를 엽니다. 가장 빠르고 쉬운 연결모드이지만, 단 하나의 JVM에서만 데이터베이스를 열수 있기 때문에 ..
작성일: 2019. 8. 5. 22:01