BC'DE 커뮤니티 Project/Trouble Shooting

BC'DE 커뮤니티 Project/Trouble Shooting

SpringBoot에서 application.yml 이외의 yml 프로퍼티 적용하기

개발 시에 테스트 환경을 분리하기 위해서 application.yml 파일을 각각 main, test 경로에 2개 설정했다. main의 application.yml : src/main/resources/application.yml test의 application.yml : src/test/resources/application.yml 이렇게 2개를 설정해놔도, Test 시에 @SpringBootTest가 있다면, test의 application.yml가 먼저 적용되기 때문에 테스트 시 문제가 없었다. 하지만, application.yml 이외의 다른 yml 파일은 test 시에 읽지 못하는 것 같았다. 현재 프로젝트에서는 AWS S3를 사용하기 때문에 S3 사용 시 인증에 필요한 access-key, s..

BC'DE 커뮤니티 Project/Trouble Shooting

EC2 gradle build 시 무한 로딩 오류(메모리 문제)

EC2에서 git clone으로 서버 파일을 clone하고 ./gradlew test 를 했는데 :compileQuerydsl 에서 무한 로딩이 걸리고 넘어가지 않았다. 구글링을 진행해보니 무한 로딩이 걸리는 오류는 메모리 부족 문제일 수도 있다고 했다. EC2 프리티어에서 사용 가능한 t2.micro의 램이 1GB밖에 되지 않아 메모리 과부하가 걸려서 무한 로딩이 걸린다는 것이었다. 원래 빌드가 실패하면 빌드 실패 메세지가 나오고 오류가 나오는데 이런 메세지조차 나오지 않고 계속 무한 로딩되길래 답답했는데 이런 상황을 보면 메모리 문제가 맞는 것 같았다. 해결 방법 : Swap 메모리 사용 Swap 메모리 : RAM의 메모리가 부족하므로, 리눅스의 HDD 공간을 RAM처럼 사용하는 것! 이를 통해 부족..

BC'DE 커뮤니티 Project/Trouble Shooting

Response Json에 is가 생략되는 문제

BoastPostInfoDto public class BoastPostInfoDto { private Long postId; // POST의 ID private String title; // 제목 private String content; // 내용 private int likeCount; // 좋아요 개수 private boolean isLike; // 좋아요 여부 } boolean 타입으로 Dto에 좋아요 여부 필드인 isLike를 생성했었는데, API 통신 시에 Response에 isLike가 아니라 is가 생략돼서 like로 출력이 됐었다. 해결 * boolean 타입 -> Boolean 타입으로 변경 public class BoastPostInfoDto { private Long postId; ..

BC'DE 커뮤니티 Project/Trouble Shooting

JPA 1:N 맵핑 순환참조 문제 해결 방법

JPA 사용 시 1:N 맵핑 관계에서 조회 시 순환참조 문제가 발생했다. 해결 방법 1. @JsonManagedReference / @JsonBackReference 2. Entity 대신 DTO로 반환 * 문제 상황 Member @OneToMany(mappedBy = "writer", cascade = ALL, orphanRemoval = true) @Builder.Default private List boastPostList = new ArrayList(); BoastPost @ManyToOne(fetch = LAZY) @JoinColumn(name = "writer_id") private Member writer; -------------------------------- @OneToMany(map..

BC'DE 커뮤니티 Project/Trouble Shooting

Request DTO에 null값이 들어가는 이유? - camelCase / PascalCase

DTO에서 Message 필드를 만들고, @Data @AllArgsConstructor @NoArgsConstructor public class UserWithDrawDto { private String Message; } 요청 시 다음과 같이 JSON 형식으로 보냈는데, DTO의 Message 필드에 null값이 들어갔다. { "Message" : "회원탈퇴" } 결론부터 말하면, DTO의 필드명을 대문자로 시작하는 파스칼 표기법(HelloWorld)로 표기해서 생기는 문제다. 해결하려면, 카멜 표기법(helloWorld)으로 필드명을 바꿔주면 된다. 파스칼 표기법 시 null 값이 들어가는 이유 1. Spring의 Json Message Converter는 Jackson 라이브러리를 사용 2. Req..

BC'DE 커뮤니티 Project/Trouble Shooting

DTO deserialize Error (DTO 필드 선언 방식)

회원 컨트롤러 테스트 중에 회원가입 컨트롤러에서 에러가 발생했다. UserRegisterDto를 생성한 후 /register로 요청하고 Dto를 참조하여 UserService의 register 메소드를 실행했는데, 결과는 username으로 조회했을 때 회원이 없다고 떴다. 회원가입이 정상적으로 되지 않은 것이다. UserControllerTest @Test public void 회원가입_성공() throws Exception { //given String RegisterData = objectMapper.writeValueAsString(new UserRegisterDto(username, password, nickName, profileUrl)); log.info("RegisterData = {}",..

BC'DE 커뮤니티 Project/Trouble Shooting

회원 테스트 시 User 조회 ClassCastException Error

UserServiceTest @Test public void 회원수정_비밀번호수정_성공() throws Exception { //given UserRegisterDto userRegisterDto = setUser(); //when String toBePassword = "12431423@#@"; userService.updatePassword(userRegisterDto.getPassword(), toBePassword); clear(); //then User findUser = userRepository.findByUsername(userRegisterDto.getUsername()).orElseThrow(() -> new Exception("회원이 없습니다.")); assertThat(findUse..

BC'DE 커뮤니티 Project/Trouble Shooting

Query에 Null 들어갔을 때

Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is java.lang.NullPointerException] with root cause 👉 컨트롤러에서 의존성 주입이 되지 않아서 쿼리에 제대로 값이 들어가지 않았었다. Controller @Slf4j @RequestMapping("user") @RestController @RequiredArgsConstructor public class UserController { private UserService userService; @PostMapping("/regis..

BE_성하
'BC'DE 커뮤니티 Project/Trouble Shooting' 카테고리의 글 목록