• 개발/Spring boot
[SpringBoot] Amazon Linux 2 AMI JDK11 설치 및 타임존 설정하기
# 시작하며 현대 백화점에서 인턴을 진행하면서 서비스 운영을 위한 배포를 해야 했다. t4g.large의 인스턴스를 택해서 배포를 진행했다. arm64기반의 AMI2 (LTS)를 사용했다. -> yum을 사용한다. EC2 최초 기동시에 해야할것들을 간단히 정리했다. # 본문 ## YUM UPDATE sudo yum update를 이용해서 최신화 하기 ## 프로젝트에 맞는 java(jdk) 설치하기 sudo yum install java-11-amazon-corretto Amazon Corretto 11 설치 지침 - Amazon Corretto 이 페이지에 작업이 필요하다는 점을 알려 주셔서 감사합니다. 실망시켜 드려 죄송합니다. 잠깐 시간을 내어 설명서를 향상시킬 수 있는 방법에 대해 말씀해 주십시오...
[SpringBoot&트러블슈팅] ddl-auto를 validate로 변경했을때 missing table 에러 해결하기
# 에러 키워드 Schema-validation: missing table [tableName] spring.jpa.hibernate.ddl-auto=validate aws를 이용한 RDS(데이터베이스)서버에 배포 후 ddl-auto를 validate로 변경시 테이블을 찾을 수 없다는 에러 lower_case_table_names # 발단 현재 현대백화점에서 인턴을 하고 있다. 스프링부트를 이용하여 프로젝트를 진행중에 있고 로컬에서 개발하던 서버를 곧 있을 사내테스팅을 위해 테스팅서버에 aws의 RDS와 연동하고 난 후, ddl-auto를 validate로 변경했을때 에러가 발생했다. 내가 도메인으로 작성했던 @Entity들을 찾지 못하는 에러가 발생했다. 그러나 RDS에 접속해서 테이블들과 엔티티를 확..
[SpringBoot&트러블슈팅] 연관관계 편의 메소드에서 @Builder를 사용할때 발생하는 NPE
# 에러 키워드 NPE ( NullPointException) Bulider 연관관계 편의 메소드 # 발단 연관관게 편의 메소드를 사용해서, 연관관계를 지정해주고 있었다. 여기서는 1:N의 양방향 관계를 관리하기 위함이었다. 즉, TAILOR_SHOP과 USER 두 엔티티가 존재하며, 각 SHOP이 N , USER가 1이다. // 유저 등록 등록 및 영속화 // User user = User.builder() .userId(dto.getUserId()) .name(dto.getName()) .password(dto.getPassword()) .phoneNumber(dto.getPhoneNumber()) .role(dto.getRole()) .build(); user.curPasswordEncode(pas..
[트러블슈팅] 타임리프에서 소수점 반올림 하는 방법
# 이슈 상황 캡스톤 프로젝트를 진행하면서 사용자(시니어)가 식단을 등록하면 연계된 보호자에게 식단에 관한 내용을 메일링하는 서비스를 구현했다. 배포 후 QA를 진행하던 중 double로 작성했던 값이 엄청 끝자리의 소수점까지 보여지는 경우가 생겼다. 아래 총 섭취 칼로리를 보게 되면 굳이 필요없는 부분까지 보여지게 된다. 소수점 둘째자리까지 보여야 하기 때문에 이를 위한 트러블 슈팅이 필요했다. # 해결 두가지 부분을 수정하는 방법으로 해결했다. ## 첫번째 방법 totalKcal을 계산하는 비즈니스 로직에서, 메일 템플릿(타임리프)에 뿌려줄때 이 값을 반올림 처리해서 보내줬다. // double을 소수점 두째자리에서 반올림하게 하는 함수 private double roundDouble(double n..
[트러블슈팅] Github Action으로 스프링부트 CI/CD 적용중 생기는 경로 이슈
# 이슈 상황 Github Action을 이용한 배포 자동화 시스템 구축 할때 gradlew을 통한 빌드를 위한 gradle.yml을 작성할때 발단 1. 현재 프로젝트는 하나의 레포지토리에 front / backend 두개로 나뉘어 있음. 그렇기 때문에 backend브런치에 gradle.yml을 작성해야함. -> 기본 작성시에는 자동으로 main에 작성되게 됨 발단 2. 인텔리제이로 스프링 부트 프로젝트를 설정했고 root경로가 래핑되어 잡혀 버림 ## 이슈 키워드 Run chmod +x /backend/server/gradlew chmod: cannot access '/backend/server/gradlew': No such file or directory Error: Process completed..
[Spring boot] 스프링부트 배포시 타임리프(Thymeleaf) 경로 에러
# 시작하며 현장실습에서 스프링 부트를 이용해 프로젝트를 진행했고(추후 하나씩 과정들을 업로드할 예정) 배포했을 시 타임리프 관련된 에러가 생겼다. # 발단 및 해결 template might not exist or might not be accessible by any of the configured Template Resolvers template might not exist or might not be accessible by any of the configured Template Resolvers 분명 개발 단계에서는 정상 작동 했기 때문에 배포시의 문제가 확실함을 느꼈다. 일단 첫번째로는 application.properties에 있는 타임리프 관련 속성들이 잘 적용 됐는지 확인했다. # thy..