![](http://i1.daumcdn.net/thumb/C148x148.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/CTnRf/btrzJ2iBCYd/mwjzzplMK2j0YIkumLGfw1/img.png)
MockMvc 에서 한글 깨짐 현상으로 인해, MockMvcBuilder를 사용하여, MockMvc 객체를 생성했을 때, 아래와 같은 에러가 발생했다면, 에러 REST Docs configuration not found. Did you forget to apply a MockMvcRestDocumentationConfigurer when building the MockMvc instance? 해결방법 기존에 테스트 클래스 상단에 @AutoConfigureRestDocs 으로 자동설정을 했었다면, 해당 자동설정은 삭제하고, 아래 이미지처럼 @ExtendWith(RestDocumentationExtension.class) 설정과 MockMvcBuilders 에서 apply를 이용해 documentationC..
![](http://i1.daumcdn.net/thumb/C148x148.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/cnSHss/btrzuWpxY1e/zK2nfkEjDtkwCtcTtOAn50/img.png)
문제 발생 Spring으로 개발하면서 Controller를 테스트하는 중에 아래와 같은 타입 문제가 발생하였다. Controller를 실행해서 얻고자 하는 최종 값의 형태는 Long 타입이었으나, 실제 반환 값은 Integer 타입이었고, 테스트에 실패하였다는 메시지가 출력되었다. 이유 해당 이유는 Jackson 을 이용하여 Deserializer 할 때 발생하는 것으로, 타입이 명확하지 않을 경우, 해당 값에 대한 최적의 타입을 자동으로 할당해준다고 한다. 그렇기 때문에, Long 타입의 1 이었어도, 자동으로 1을 Integer 타입으로 변환하여, 출력하였고, 에러가 발생한 것이다. 자세한 내용은 하단 Reference 를 참고하자. 해결방법 타입을 명확하게 지정하면 된다. 기존 작성 코드는 아래와 ..
![](http://i1.daumcdn.net/thumb/C148x148.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/GJaeL/btrxNYC8n8O/ekEwEnYeEoKoex0Y9iOtdK/img.png)
본 글은 "Spring in Action : REST 서비스 사용하기" 를 읽고 정리한 글입니다. 스프링 애플리케이션의 REST API 를 사용 방법 - RestTemplate : 스프링 프레임워크에서 제공하는 간단하고 동기화된 REST 클라이언트 - Traverson : 스프링 HATEOAS에서 제공하는 하이퍼링크를 인식하는 동기화 REST 클라이언트 (같은 이름의 자바스크립트 라이브러리로부터 비롯됨, HATEOAS가 적용된 리소스에 대해 링크를 통해 쉽게 접근하기 위해서 만들어진 것) - WebClient : 반응형 비동기 REST 클라이언트 본 글에서는 RestTemplate, Traverson 에 대해 얘기한다. RestTemplate - RestTemplate 은 저수준 HTTP 라이브러리를 이..
![](http://i1.daumcdn.net/thumb/C148x148.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/bnSkhL/btrwglrUFXP/P1oc1diFfz4o6rKifmp3M0/img.png)
Reference 패스트캠퍼스 강의 : The Red: 25개 백엔드 개발 필수 현업 예제를 통해 마스터하는 JAVA STREAM Decorator Pattern 구조 패턴 중 하나 용도에 따라 객체에 기능을 추가(decorate)함 구현 방식 아래 두가지 기능을 포함해야 한다. - 실제 처리 기능을 포함하는 메서드 - 다음 처리자에게 넘기는 메서드 구현 코드 [ PriceProcessor.java ] interface 이며, 처리로직을 포함하는 추상 메서드, 다음 처리자로 넘기는 메서드를 포함한다. - process() : 처리 기능 로직을 포함하는 메서드 - andThen() : 다음 처리자와 연결하는 메서드 [ BasicPriceProcessor.java, DiscountPriceProcessor...
![](http://i1.daumcdn.net/thumb/C148x148.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/bBT9gf/btrwbqO0QN2/mMw7hpsOQx9t4Mpuo75HB0/img.png)
Spring in Action 을 읽고, 필요한 부분 정리한 글입니다. HATEOAS : Hypermedia As The Engine Of Application State 클라이언트 요청에 대한 응답으로, 요청한 리소스와 관련된 하이퍼링크를 같이 제공하여, 서버와 클라이언트의 독립성을 높인다. 이뿐만이 아니라, 애플리케이션이 어떻게 동작하는지 사전지식이 없어도, 해당 리소스를 확인하고 링크들을 통해, 접근가능한 동작들을 확인하고 호출할 수 있도록 제공한다. 서버와 클라이언트의 독립성을 어떻게 높이나? 예를들어, 서버에서 제공하는 리소스를 사용하기 위해, 클라이언트 측에서 하드코딩(문자열로 작성한 URL 주소)하여, 리소스 요청 기능을 개발했다. 그런데 서버 측에서 리소스 요청에 대한 경로를 변경했다고 하..
![](http://i1.daumcdn.net/thumb/C148x148.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/bLta3K/btrvKJUn2Sc/r5jsoXK9egr03ozooatqu0/img.png)
Reference - 패스트캠퍼스 "The Red: 25개 백엔드 개발 필수 현업 예제를 통해 마스터하는 JAVA STREAM" : Template Method Pattern Template Method Pattern - 행동패턴 - 상위 클래스는 알고리즘의 뼈대만을 정의하고 알고리즘의 각 단계는 하위 클래스에게 정의를 위임하는 패턴 - 알고리즘의 구조를 변경하지 않고 세부 단계들을 유연하게 변경할 수 있게 해줌 Template Method Pattern 코드 [ AbstractUserService.java ] - 알고리즘의 뼈대만을 정의한 abstract class. : 알고리즘 역할 메소드 : createUser() : 하위클래스가 작성해야 할 세부단계 메소드 : validateUser(), writ..
![](http://i1.daumcdn.net/thumb/C148x148.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/8XYTr/btrvBk93Ava/Jkb6w2fcO8YzR9D67iM5EK/img.png)
Reference 패스트캠퍼스 "The Red: 25개 백엔드 개발 필수 현업 예제를 통해 마스터하는 JAVA STREAM" 모던 자바 인 액션 -전문가를 위한 자바 8,9,10 기법 가이드 Strategy Pattern (전략 패턴) - 행동 패턴 중 하나 - 런타임에 어떤 전략(알고리즘)을 사용할 지 선택할 수 있게 해줌 - 전략들을 캡슐화하여 간단하게 교체할 수 있게 해줌 Strategy Pattern(전략 패턴) 구성 - 알고리즘을 나타내는 인터페이스(Strategy 인터페이스) - 다양한 알고리즘을 나타내는 한 개 이상의 인터페이스 구현 - 전략 객체를 사용하는 한 개 이상의 클라이언트 Strategy 구현 [ EmailProvider.java ] - 알고리즘을 나타내는 인터페이스 : 해당 인터..