Spring132 RDS timezone Asia/Seoul 로 변경하기 Spring boot 와 RDS 를 연결한 후, 데이터를 입력했을 때 시스템 시간을 Asia/Seoul 로 변경하는 법을 알아본다. 설정하지 않으면 기본 디폴트값인 UTC 로 저장되어 보기가 어렵다 ( 아시아/서울 -9h 으로 지정되어있다 ) RDS 에서 파라미터 그룹을 생성해준다. 현재 사진상에 있는 timezone 을 만들어주는 과정이다. default 가 붙어있는 파라미터는 설정이 변경되지 않아 따로 만들어서 변경해주어야 한다. 유형은 DB 파라미터 그룹으로 한다. 그룹이름은 사용자가 원하는데로 작성한다. 생성된 timezone 을 누르고 설정을 변경해준다. 파라미터가 워낙많으니 time_zone 으로 검색하여 Asia/Seoul 로 변경한 후 변경 사항 저장을 한다. 변경이 완료되었으면 이제 사용.. 2023. 1. 19. AWS Secrets Manager 설정하고 Spring boot 연동하기 프로젝트를 배포하려는 중 .ignore 한 파일에 대한 환경변수를 어떻게 처리해야할지 고민이 많았다. DB 접속정보도 중요하고, AWS S3 에 대한 access-key , secret-key 등 중요한 정보가 많았다. 개인프로젝트 배포를 Docker 와 ec2, github action 을 이용해서 했는데, 여러 블로그를 보니 properties 파일을 따로 만드는 코드를 작성해서 환경변수를 넣어주는 것 같았다. 이러한 중요한 정보를 키/값 으로 지원해주는 솔루션을 제공해주는 여러가지 방법이 있었다.키교체, 교차 계정 액세스 등 아직은 사용하지않지만.. 현업에서 더욱 많이 사용할 거라 생각해 선택했다.https://rainbound.tistory.com/entry/AWS-Parameter-Store-%.. 2023. 1. 19. RDS MYSQL 연결 시 Connection time out 해결하기 RDS 연결을 하려고 여러 블로그들을 봤을 때 너무 간단해보였다. 다 동일한 과정이어서 호기롭게 도전했지만 Connection time out , unable to connect to localhost 에러에서 2시간이 넘게 걸렸다. RDS 를 몇번이나 삭제하고 새로 생성해도 같은 에러가 발생했으며, 보안그룹을 아무리 수정해도 똑같았다. 아래 해결방법을 공유하고자 한다. RDS 생성과정은 너무 많은 블로그가 있어서 생략하고 생성과정 중 꼭 확인해야할 것은 퍼블릭 액세스 여부를 "예" 로 설정해주어야 한다. 이후 아래 과정을 진행한다. aws -> vpc 로 들어가기 vpc 에 들어가면 라우팅 테이블 목록이 있다. 라우팅 테이블을 선택한다. 테이블 목록에서 RDS 와 연결되어 있는 것을 찾아야 한다. 아마.. 2023. 1. 17. @Convert - T타입 + Map 사용하기 개인프로젝트로 쇼핑몰을 제작하면서 상품에 대한 옵션을 계획했으며 구현을 진행했다. 네이버스마트 스토어처럼 한 상품에 여러 옵션을 가지고 있을 수 있어야 했는데, 제약조건이 있었다. 1. 옵션은 없을 수도 있지만 N 개가 될 수 있다. 2. 옵션의 명칭은 자유롭게 작성가능하다. EX ) 색상 : 검정 // 컬러 : 검정 // 색깔 : 검정 처럼 사용자 마음대로 가능하다. 옵션값을 JSON 형태로 나타내야 했는데 spring jpa convert 를 사용했다. 언제 사용할까? JPA 가 지원하지 않는 타입을 매핑할때 두 개 이상의 속상을 갖는 밸류 타입을 한 개 칼럼에 매핑할 때 @Converter를 사용하기 위해서는 AttributeConverter 인터페이스를 구현해야 한다. 클래스를 따로 만들어야 하며.. 2023. 1. 14. 스프링 배치 (Spring Batch)로 Hello World 를 출력 스프링 배치를 사용하는 이유는 아래와 같다. - 풍부한 기능 : 로깅/ 추적 , 트랜잭션이나 롤백같은 개념 등 필수적인 기능을 제공한다 - 일관성된 코드 - 기존 서비스가 스프링 프레임워크로 되어있을 경우 호환 가능 JobRepository : 배치 처리 정보를 담고있는 저장소 JobLauncher : Job을 실행시켜주는 역할 Job : 배치처리 과정을 하나의 단위로 만들어 놓은 것 ex) 이메일 발송 등 Step : Job의 배치처리를 정의하고 순차적인 단계를 캡슐화한다 ex ) 이메일 발송의 세부적인 작업 ItemReader : Step 에서 Item을 읽어오는 인터페이스 ItemProcessor : Reader 에서 읽어온 Item 데이터를 처리하는 역할 ItemWriter : 처리된 Data 를.. 2023. 1. 12. Multipart 는 HTTP POST 로만 사용 프로젝트 중 상품 수정 관련하여 통합테스트 작성 중 Multipart 관련하여 오류가 발생해 찾아보게 되었다. 발생한 오류는 405 에러로, HTTP 메서드가 잘못된 에러였다. 여기서 궁금했던 점은 , 상품 등록 할 때와 똑같이 multipart 를 사용했고, contentType 도 MIXED 를 사용을 했는데 에러가 발생했다는 점이었다. 405에러니까 HTTP 메서드를 보았는데, 등록은 POST 수정은 PUT 이었다. 따라서 PUT 이 잘못되었다는 건데, POST 가 수정으로 사용할 수 있으니 바꾸어 테스트 해보니 정상적으로 통과가 되었으며, 실제 POSTMAN 에서 직접 POST 로 수정했을 때 정상적으로 DB 데이터와 S3 데이터 모두 정상변경 되는 것을 확인했다. 이제 왜 PUT 은 안되는지 확.. 2023. 1. 11. spring boot docker mysql 기본설정 3306 포트가 사용중이라면 아래와 같이 검색 후 종료가 가능하다. 3306 포트 찾기 : netstat -ano | findstr :3306 포트 죽이기(관리자모드로 실행) : taskkill /f /pid 5544 (pid 번호가 5544 일 경우 ) mysql 이미지 설치 버전지정 후 설치 : docker pull mysql:8.0.17 최신버전 : docker pull mysql 도커 이미지 확인 docker images 도커 설치 후 실행 + 한글 설정 docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD= --name mysql:8.0.17 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_.. 2023. 1. 9. spring 스케줄러(Scheduler) 적용하기 스프링 스케줄러에 대해 알아보고 적용해보려고 한다. ( 개인 프로젝트에 적용해보려고 했는데, 아직 어디에 쓸지 생각이 안나서 보류중이지만, 이후 기능을 추가하거나 나중에 무조건 쓸거라 생각한다. ) 스케줄러의 종류로는 Scheduler 말고 Quartz 라는 방식도 있다고 하는데 단순한 스케줄러 구현에서는 Scheduler 를 사용한다고 한다. Quartz는 조금 더 세밀하게 동작이 가능하지만 구현이 복잡하다는 단점을 가지고 있다. 먼저, 가장 기본이 되는 것부터 동작하는 것에 대해 이해하고 Quartz 는 나중에 필요할 때 추가로 공부해보려고 한다. 스케줄러는 간편하게 @Scheduled 어노테이션을 사용해서 일정한 시간 간격, 또는 특정 시간에 코드가 실행되도록 설정할 수 있도록 도와준다. 설정관련된.. 2023. 1. 4. Springboot AOP 적용 + 어노테이션 기반 https://josteady.tistory.com/746 AOP 란 무엇인가? + 예제 AOP(관점지향 프로그래밍) 를 간단히 설명하면 공통 처리 등의 '횡단적 관심사(부가기능)'를 추출하고 프로그램의 여러 곳에서 호출할 수 있게 설정함으로써 개발자는 실현해야할 기능인 '중심적 josteady.tistory.com 이전에 공부하면서 작성한 포스팅에 앞서, 현재 프로젝트에 적용함에 있어 다시한번 정리하고자 한다. 비슷한 내용이지만, 어노테이션을 직접 만들어본 경험이 없어 AOP 를 적용시키면서 같이 학습하는 좋은 경험이 되었다. AOP 는 공통 처리 기능(부가 기능) 을 추출해서 프로그램의 여러 곳에서 호출해 사용할 수 있도록 해준다. 내가 만들 AOP의 기능은 단순한 메서드 실행 시간 측정이다. AOP.. 2023. 1. 3. 이전 1 ··· 3 4 5 6 7 8 9 ··· 15 다음