개발 공부
[SpringBoot x JPA] Soft Delete #1 Select (해당 Status 조건 추가 조회 방법) - @Where
현재 상황 저는 현재 서버 개발 중, Delete 요청 시 실제로 데이터를 삭제하는 Hard Delete 방식이 아닌 해당 데이터의 Status를 변경해서 관리하는 Soft Delete 정책을 사용 중입니다. 그러나 요구 사항 중, 이메일 또는 닉네임이 중복되지 않아야 하는 조건이 있었습니다. 위에서 설명했듯이, 실제로 데이터가 지워지는 것이 아니기 때문에 회원 탈퇴한 유저의 데이터는 그대로 DB에 저장되어 있습니다. 따라서 동일한 닉네임으로 다른 유저가 회원 가입하는 경우 탈퇴된 유저의 영향을 받으면 안 됩니다. 조회할 때 어떻게? 사실 이전 프로젝트에서는 Spring Data JPA를 이용해서 메서드를 만들고 쿼리를 만들었던 기억이 있습니다. Optional findByNickNameAndAccoun..
![[AWS] Endpoint does not contain a valid host name: null](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcdn9rx%2FbtrJsvBykBV%2FCN5cM9BfQQeY9ftJJAztW1%2Fimg.png)
[AWS] Endpoint does not contain a valid host name: null
문제 상황 S3를 이용하기 위해서 연동을 하던 중, 처음 보는 에러를 마주쳤습니다. S3 연동은 많이 해봐서 바로 될 줄 알았는데, 아예 처음 보는 에러였습니다. java.lang.IllegalArgumentException: Endpoint does not contain a valid host name: null at com.amazonaws.services.s3.internal.S3RequestEndpointResolver.resolveRequestEndpoint(S3RequestEndpointResolver.java:115) at com.amazonaws.services.s3.internal.S3RequestEndpointResolver.resolveRequestEndpoint(S3RequestEn..
![[SpringBoot x JPA] List 초기화에서 Builder 패턴 사용 시 NullPointerException](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbw3LZh%2FbtrJfYdMr7S%2FCxFyFPavofxqHRPfPecGGK%2Fimg.png)
[SpringBoot x JPA] List 초기화에서 Builder 패턴 사용 시 NullPointerException
문제 상황 평소와 같이 1:N의 관계인 Entity를 생성하고 1에 해당하는 클래스에서 @OneToMany(mappedBy = "family")를 했습니다. 그리고 해당 List를 new ArrayList()로 미리 초기화를 해줬습니다. (Null 방지) 그리고 service 레이어에서 insertNewMember 메서드를 실행시켰는데, 바로 NullPointerException 발생.. 해당 List가 Null 상태인 것을 발견했습니다. @Entity @Getter @NoArgsConstructor(access = AccessLevel.PROTECTED) @AllArgsConstructor @Builder public class Family extends BaseTimeEntity { @Id @Gene..
![[SpringBoot] response.sendRedirect(url)가 동작하지 않는 경우](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbaC6wS%2FbtrGQFn6Ic0%2Fxm63qcZcLzKUYOtS3UXEyk%2Fimg.png)
[SpringBoot] response.sendRedirect(url)가 동작하지 않는 경우
현재 상황 - 인증, 인가 관련 예외 처리를 진행하던 중, AuthenticationEntryPoint에서 응답을 주기 위해서 redirect를 하고 있었다. - 흐름은 AuthenticationEntryPoint -> sendRedirect("/exception/**") -> ExceptionController에서 throw new CustomException -> ControllerAdvice에서 해당 exception에 대한 예외 처리 - 그러나 해당 response가 Controller까지 도달하지 못하고 계속 요청이 동작하지 않는다. - 프로젝트에는 스프링 시큐리티가 적용되어 있다. 문제 Could not get response Error: Exceeded maxRedirects. Probabl..
![[SpringBoot] Custom Exception 에러 처리 및 리팩토링 (Custom Exception)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FzJG7d%2FbtrFT4aeStZ%2FeKoTt9v04AkDtWNmNishe1%2Fimg.png)
[SpringBoot] Custom Exception 에러 처리 및 리팩토링 (Custom Exception)
현재 상황 현재 유지 보수하고 있는 웨일던 프로젝트는 스프링 부트 경험이 없던 내가 첫 프로젝트로 진행했던 터라, 크고 작은 버그가 많다. 개발할 때 인지했지만 개발 기간이 부족해서 이슈로만 등록해두고 일단 진행했었다. (CMC라는 it 동아리에서 진행했던 터라 기간 내에 완성해야 했다) 따라서 과거에 내가 시간이 없다는 핑계로 뿌려뒀던 코드들을 하나씩 고치고 있다. 이번 리팩토링 내용은 서버의 예외 처리 및 로그에 관한 내용이다. 대단하거나 어려운 내용은 없지만 삽질했던 경험을 공유하고자 한다. 문제 현재 프로젝트 내에서 예외처리는 Custom Exception을 만들어서 인자로 enum Type의 ExceptionStatus를 넣어주고 있다. 따라서, 기본 구조는 Controller로 요청이 들어온 ..
[SpringBoot] Error - Parameter 0 of constructor in ~ required a bean of type 'java.lang.String' that could not be found.
상황 - FCM 기능을 추가하기 위해서 해당 클래스와 메서드를 구현하던 중, 필요한 변수를 설정 중 - 해당 변수들을 코드 단에 application.yml에서 @Value 어노테이션을 이용해서 주입해주려 했으나 서버를 실행시키면 에러가 발생 에러 *************************** APPLICATION FAILED TO START *************************** Description: Parameter 0 of constructor in ~ required a bean of type 'java.lang.String' that could not be found. Action: Consider defining a bean of type 'java.lang.String' in..