반응형

Spring 32

[Kotlin] Kotlin DSL + Spring REST Docs + MockMvc 적용기 (1)

현재(22.07.17.) 는 아직 Spring REST Docs에서 kotlin DSL 공식지원을 하지 않고 있는 상황이다. https://github.com/spring-projects/spring-restdocs/issues/677 Document how to use Spring REST Docs with the MockMVC Kotlin DSL · Issue #677 · spring-projects/spring-restdocs Was trying to implement RestDocs MockMvc in our Kotlin project However noticed that when using the MockMvc Kotlin DSL snippets were not generated e.g. fun..

[Spring] 테스트에서 test 스키마가 아닌 main의 스키마를 의존한다면? _ application.yml 설정

아래 그림과 같이 main과 test 패키지에서 따로 db를 생성해야 한다고 해보자. 테스트에서는 매번 drop table if exists를 해주지만, main에서의 schema.sql에서 drop table을 해줄 경우에 배포할 때마다 데이터들이 리셋되므로 정말 큰일나게 된다. 이렇게 테스트 때와 실제 실행에서의 schema.sql을 다르게 해주고 싶다면 어떻게 해야 할까? @Sql 어노테이션을 쓰는 방법으로 해결된다고들 하지만, 나는 그 방법으로 해결되지 않았다. test 클래스마다 @Sql 어노테이션으로 classpath prefix까지 붙여주면서 사용해보아도 자꾸 test_schema가 아닌 메인 패키지의 schema.sql을 의존했다. 아직도 이 부분은 명확한 이유를 모르겠다.. 그럼 어떻게 ..

[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 포스..

반응형