반응형

Spring 30

[Spring][TDD] RestAssured를 이용한 e2e test로 Controller API까지 통합 테스트해보자

그동안 나는 단위 테스트만을 진행해왔다. 도메인 로직이 잘 실행되는지 junit 문법의 Assertions로 테스트해왔다. dao test는 @JdbcTest를 이용하여 단위테스트를 했고, service test는 fake 객체를 만들어주어 단위 테스트를 진행해주었다. 그런데 컨트롤러는 @RestController에서 @RequestBody로 request를 받고, ResponseEntity를 넘겨주기 때문에 웹 애플리케이션을 직접 실행하면서 테스트하지 않는 이상, 어떻게 테스트해야할지 감이 오지 않았다. RestAssured를 이용하면 API response의 statusCode뿐만 아니라 body에 올바른 값이 담기는지도 테스트가 가능하다! 이번 시간에는 Spring 환경에서의 RestAssured를..

[ERROR] Communications link failure (Docker + MySQL + Spring JdbcTemplate 연동 실패) 에러 해결

문제 상황 스프링 환경에서 도커를 이용한 mysql + JdbcTemplate으로 db 연동을 하는 과정에서 아래 에러가 발생했다. Spring 애플리케이션을 실행하는 도중에 히카리풀에서 에러를 뱉으면서 jdbc 연결이 안되는 현상이었다. 에러 메시지는 아래와 같다. com.mysql.cj.exceptions.CJCommunicationsException: Communications link failure ... The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server. ... Caused by: java.net.ConnectExcep..

Infra/Docker 2022.04.24

[ERROR] 406 에러 _ Not Acceptable (스프링 직렬화/역직렬화)

문제 상황 스프링 환경에서 특정 dto 를 반환해주는 api에서 406 에러가 발생했다. @GetMapping("/status") public ResponseEntity status() { return ResponseEntity.ok(chessService.getStatus()); } 뿐만 아니라, 응답으로 MoveDto를 받아서 작동하는 move api도 아예 작동하지 않았다. @PostMapping("/move") public ResponseEntity move(@RequestBody MoveDto moveDto) { System.out.println(moveDto); return ResponseEntity.ok(chessService.move(moveDto)); } MoveDto를 요청으로 받아서 ..

[211007] 템플릿엔진(thymeleaf)으로 비동기 처리 방식에 대해 고민중이다.

그동안 나는 '소박하지만 그룹입니다' 백준 그룹 멤버들의 공간을 만들기 위한 작인 개인프로젝트를 진행중이었다. 회원, 로그인, 게시글 기능까지 구현을 완료하고 이제 댓글 기능을 구현하려던 중, 문제점이 하나 발생했다. 바로 댓글 기능이다. https://github.com/kth990303/BOJStudyList/issues/18 댓글 기능을 만들어주세요. · Issue #18 · kth990303/BOJStudyList 드디어 댓글 기능을 추가할 차례입니다. Post : Comments 1:N 연관관계로 진행하면 될 것 같습니다. 기한은 11월 초까지이며, 요구사항은 아래와 같습니다. 게시글에 댓글을 작성할 경우, 댓글내용이 github.com 비동기가 필요하다고 느낀 이유? 우리가 흔히 생각하고 있는..

[Spring] MapStruct 수동으로 오버라이딩 코드 구현하기

Entity dto 반환 mapper를 알아보던 중, ModelMapper보다 MapStruct가 성능이슈가 적고, 편리하다는 말을 들어 mapstruct를 애용중이다. 간단한 mapstruct 이용법은 아래 포스팅에서 볼 수 있다. https://kth990303.tistory.com/131 [Spring] MapStruct를 이용한 Entity, Dto 반환 및 고찰 그 동안 View layer에서 Entity에 직접적으로 접근하도록 코드를 짰던 나에게, 이번 DTO 적용은 상당히 고된 일이었다. 사실 dto는 단순한 entity의 클론 느낌이라 적용이 크게 어렵지 않을 줄 알았는데, kth990303.tistory.com 그런데, 문제가 생겼다. 도메인이 두 개 이상이며, 도메인끼리 연관관계를 이룰..

[Spring] MapStruct를 이용한 Entity, Dto 반환 및 고찰

+) 22.12.10. 추가 MapStruct 사용 여부에 대한 고찰은 여기로 이동해주세요! https://kth990303.tistory.com/403 [Spring] MapStruct를 이용한 Entity DTO 고찰 (2) mapstruct는 entity dto를 자동으로 반환해주는 객체 매핑 라이브러리이다. 엄청 옛날에 이런 포스팅을 작성한 적이 있다. (진짜 옛날 글이라 지식이 부족할 때 작성했어서 굳이 열람할 필요는 없다.) kth990303.tistory.com 아래 글은 오래 전에 작성됐습니다. 지식이 부족할 때 작성된 글임을 유념해주시고 읽어주시면 감사하겠습니다 :) 그 동안 View layer에서 Entity에 직접적으로 접근하도록 코드를 짰던 나에게, 이번 DTO 적용은 상당히 고된 ..

[Spring] MySQL+JPA+Spring+Gradle 환경설정 및 실습

그동안 백준 풀면서 스프링 공부를 소홀히 한 게 느껴져서 오랜만에 스프링 공부도 할 겸, 간단한 회원조회 실습을 해보기로 했다. 말그대로 기초적인 간단한 실습을 복습 겸 하는거라, Domain에 Member(회원)밖에 없으며, CRUD 중 R(Read) 기능만 잘 되게 만들어보았다. 하다가 막히는 부분은 아래 내 깃헙에 있는 crud 간단하게 만들어봤던 코드를 참고하면서 하였다. github.com/kth990303/RoastChickenSoup kth990303/RoastChickenSoup 회원조회 및 게시판. Contribute to kth990303/RoastChickenSoup development by creating an account on GitHub. github.com 환경세팅 일단 s..

[JPA] 실전예제1_요구사항 분석과 기본매핑까지 수강했다

오늘 심심해서 프로그래머스에서 이것저것 볼 거 없나 구경하다가 이런 글을 발견했다. programmers.co.kr/job_positions/4500 비바리퍼블리카(토스) - [토스뱅크(가칭)] Server Developer (Product) | 프로그래머스 개발자 커리어 플랫폼 프로그래머스에서 비바리퍼블리카(토스)의 채용공고를 확인하세요. 합격하면 사이닝보너스 50만원을 드립니다. programmers.co.kr 네카라쿠배당토직야... 등등의 대기업에 해당되는 토스의 채용공고였다. 여기서 가장 눈에 들어오는 것은 아래 사진 부분이었다. 실제로 내가 지금 공부하고 있는 부분이 Gradle을 이용한 Spring Framework, MySQL에 ORM을 JPA로 사용하고 있는 상황이었어서 (이번 JPA 포스..

[Spring] 빈 생명주기 콜백과 객체의 초기화

4월이 되고 일병4호봉이 되었다. 그 기념 오늘은 스프링 공부를 하려 한다. (???) 사실 위 이유는 농담이고, 요즘 nodejs, 백준 알고리즘 공부로 인해 스프링부트 공부를 많이 진행하지 못했다. 스프링 핵심원리 기본편 강의를 4월 중순까진 완강하고 5월부터는 spring security를 이용한 로그인 기능을 구현하거나, crud 기능을 응용해서 게시판 기능을 만들거나, 아니라면 크롤링을 통해 유저의 맞은 문제 리스트를 보여주는 기능을 구현하든지 하고 싶다. 사실 이런 내용은 나중에 따로 내 일기장 글에 포스팅하면 되므로 여기서 마치고 본론으로 어서 들어가보자. 인프런 김영한님의 스프링 핵심 원리 강좌를 수강하고 제 개인적인 공부를 복습 겸 포스팅한 내용입니다. 틀린 내용은 댓글로 피드백 부탁드립..

JAVA/Spring_Core 2021.04.01

lombok은 진짜 신세계다...

@Getter @Setter로 Getter setter method를 안만들어도 되는 기능은 알고 있었지만, 이번에 인강을 들으면서 @RequiredArgsConstructor 어노테이션으로 자동으로 스프링 빈 등록된 거에서 의존자동주입시키는 기능이 진짜... lombok dependency가 있으면 일일이 autowired 안쳐줘도 되고... 필드들이 알아서 생성자주입 돼서 너무 편리하고 좋다. 마치 Bean을 componentscan으로 자동으로 알아서 찾아주는 기능을 공부했을 때 느낀 감정과 유사하다. lombok Dependency Gradle에 적용하기 인프런 김영한의 스프링 핵심 원리 강좌 교안 중 일부 내용입니다. //lombok 설정 추가 시작 configurations { compileO..

JAVA/Spring_Core 2021.03.22
반응형