Spring Boot
-
[SpringBoot] Errors 인터페이스의 구현체와 에러 메시지 저장 위치Back-end/TIL 2022. 4. 4. 16:13
📌 상황 @PostMapping("/user/sign-up") public String userSignUp(@Valid UserDto.UserSignUpReqDto userSignUpReqDto, Errors errors, Model model) { //회원가입 실패 if (errors.hasErrors()) { return "user/sign-up"; } //회원가입 성공 (로그인 완료 페이지로 리다이렉션) return "user/login"; } @Valid에 의해 발생한 Validation Error는 Errors 인터페이스 타입의 객체에 담긴다. 해당 객체에 Error가 존재하는지 체크하여 유효성 검사 처리를 할 수 있다. 📌 Errors는 인터페이스인데, 그럼 해당 인터페이스의 구현체는 무엇일까..
-
[SpringBoot] Converter를 사용한 사용자 정보 암호화 / Cascade 옵션 설정 / 모르는 개념 공부 방법Back-end/TIL 2022. 3. 30. 09:48
스타트업 백엔드 인턴으로 근무하며 배운 내용을 까먹지 않기 위해 정리하는 글입니다. 📌 사용자 정보 암호화 회사의 데이터베이스에는 사용자에 대한 정보(이름, 전화번호 등)가 암호화되어 저장되어 있었다. 팀장님께 여쭤보니 데이터 포털 사이트에 가면 사용자 정보 암호화 관련 법률이 있어서 그것을 따라야 한다고 말씀해주셨다. ▶️ 사용자 정보를 암호화하여 데이터베이스에 저장하는 방식 A. javax.persistence.AttributeConverter 인터페이스를 구현한 클래스를 생성 & 해당 클래스를 @Convert로 지정 import javax.persistence.AttributeConverter; import javax.persistence.Convert; @Convert public class St..
-
[SpringBoot] 테스트 코드 작성에 대하여 / 멀티 모듈의 장점 / API 설계 및 배포 / 코드 작성 관련(다형성, lombok, import문)Back-end/TIL 2022. 3. 24. 09:16
스타트업 백엔드 인턴으로 근무하며 배운 내용을 까먹지 않기 위해 정리하는 글입니다. 📌 테스트 코드 작성에 대하여 테스트 코드 작성에 대해서 나는 절대적인 기준이 있다고 생각했다. 하지만 회사에서 테스트 코드를 작성하고 팀장님께 피드백을 받으며 테스트 코드 작성에는 절대적인 규칙은 없고, 상황에 따라 적절한 방식을 선택하면 되는 것임을 깨달았다. ▶️ 테스트를 위한 데이터(객체, 변수) 준비를 위한 방법: @BeforeAll vs. @BeforeEach vs. 테스트 메서드 내 //given 테스트를 수행하는데 오래 걸리지 않는 상황리아면 3가지 방식 중 어떤 것을 사용할지는 각 회사의 표준이나 개인의 취향에 따라 많이 갈리는 편이다. 성능 이슈가 발생하는 상황이나 이로인해 테스트가 깨지는 상황이 아니라..
-
[SpringBoot] @TestInstance / @WithUser & @WithAccount / 중복된 코드에 대한 메서드 분리Back-end/TIL 2022. 3. 21. 09:00
특정 API의 POST와 UPDATE 시 예외처리 코드를 추가하는 업무를 진행했다. 업무를 진행하며 배운 내용에 대해 잊지 않기 위해 작성하였다. 📌 SpringBoot의 테스트 코드 작성시 @TestInstance(TestInstance.Lifecycle.PER_CLASS) 해당 어노테이션은 테스트 인스턴스의 라이프 사이클을 설정할 때 사용한다. PER_METHOD: 테스트 함수 당 1개의 인스턴스가 생성된다. PER_CLASS: 테스트 클래스 당 1개의 인스턴스가 생성된다. 라이프 사이클을 클래스 단위로 설정하면, @BeforeAll, @AfterAll 어노테이션을 static method가 아닌 곳에서도 사용할 수 있다. 장점 매 테스트 메서드마다 클래스의 인스턴스를 생성하는데 필요한 자원이 많을 ..