Spring

    BDDMock으로 서비스 테스트하기

    우선 모키토란 유닛 테스트를 위한 프레임워크인데, 단위테스트를 하기 위해서 목을 만들어주는 프레임워크이다. 목 객체를 만들고, 목 객체동작을 지정하고, 테스트 대상 로직이 제대로 수행되었는지 확인하는 것. 우리는 mockito를 사용하여 테스트할 때 when()과 stub을 이용해 행위를 지정해주어야한다. when 메소드를 통해 특정 메소드가 호출되었을 때 특정 값을 반환하라고 설정한다. 이때 설정한 반환값을 stub이라고 한다. ex. when(Joanne.say()).thenReturn(new Say("안녕")); -> new Say("안녕")이 Stub 역할을 한다. 또한 doThrow().when() 을 통해 특정 상황에서 예외를 던지도록 설정할 수 있다. 더불어 verify()를 이용해 검증도..

    Interceptor와 Argument Resolver의 역할을 구분하자

    보호되어 있는 글입니다.

    NamedParameterJdbcTemplate을 써보자

    보호되어 있는 글입니다.

    생성자에서 같은 타입의 인자를 여러개 받을 때, Builder 패턴을 사용해보자

    https://joanne.tistory.com/90 [Effective Java] 아이템 2. 생성자에 매개변수가 많다면 빌더를 고려하라 아이템 2. 생성자에 매개변수가 많다면 빌더를 고려하라. 생성자에 매개변수가 많을 때, 사용하는 점층적 생성자 패턴의 객체가 완전히 생성되기 전까지는 일관성이 무너진 상태에 놓이게 되는 joanne.tistory.com 사실 위 글에서 알 수 있듯이, 이펙티브 자바에서 저 내용을 읽은 적이 있다. 하지만 전혀••• 기억하지 못하고 있었다. 하지만 이번에, 위와 같은 리뷰를 받게 되었다. 우선, Section 클래스는 다음과 같은 필드를 갖고 있다. public class Section { private Long id; private Station upStation; ..

    커스텀 예외(Custom Exception)를 효과적으로 사용하기

    블로그를 https://seovalue.github.io/ 로 이전 중이에요 🚌 해당 글은 https://seovalue.github.io/2022/02/21/custom-exception/ 에서 확인할 수 있어요.

    JWT (Json Web Token)

    JWT(Json Web Token)이란 Json 포맷을 사용하여 사용자에 대한 속성을 저장하는 Claim 기반의 Web Token이다. JWT는 토큰 자체를 정보로 사용하는 Self-contained 방식으로 정보를 안전하게 전달한다. JWT 구조 JWT는 Header, Payload, Signature의 3부분으로 이루어지며, Json 형태인 각 부분은 Base64로 인코딩되어 표현된다. 또한 각각의 부분을 이어주기 위해서는 (.) dot 구분자를 사용한다. Base64는 암호화된 문자열이 아니고, 같은 문자열에 대해 항상 같은 인코딩 문자열을 반환한다. sdddfjsadddlkfjaskldf.sdkddldfjasljfa.asdklfjaslkfjdd // 헤더(header).내용(payload).서명(..

    Spring Layer

    Web Layer 웹 애플리케이션의 최상위에 존재하는 레이어로서 외부 요청을 처리하고 응답을 사용자에게 반환하는 역할을 한다. 또한 다른 예외에서 처리한 예외도 처리한다. (exception handler) 또한 인증을 관리하고 권한 없는 사용자의 인가를 거부하는 역할을 한다. Service Layer Web Layer 바로 아래에 위치하는 계층으로 트랜잭션에 대한 경계 역할을 하며, 애플리케이션과 인프라를 포함하고 있다. 애플리케이션 서비스로는 서비스 계층의 api를 공급하며 트랜잭션의 경계 역할과 응답을 담당한다. 인프라 서비스는 외부 리소스와 통신하는 것이 포함되어있다. 컨트롤러와 다오의 중간 영역에서 많이 사용되며 @Transactional, @Service에 사용되는 레이어이다. 더보기 여기서 ..

    Facade Pattern을 Layer에 적용한다면?

    특정 요청이 여러 개의 dao 참조를 필요로 하는 경우가 존재한다고 가정하자. 이와 같은 경우, 우리는 service layer에 여러개의 dao를 필드로 둘 것인지, controller가 여러 개의 service를 가질 것인지, service가 여러 개의 서비스를 가지도록 할 것인지에 대해 고민하게 된다. 이 경우, 나는 Facade Pattern과 유사한 방식을 Service Layer에 적용해보았다. (물론 적용할 땐, 퍼사드인지 몰랐다!) 우선 Facade Pattern이란, 어떠한 서브 시스템의 일련의 인터페이스에 대한 통합된 인터페이스를 제공하는 방법이다. 라고 했지만, 너무 어렵다. 실생활에서의 예를 들어보자면, 퍼사드는 건물의 정면(외관)을 의미하는데, 하위 시스템들에 대해 건물의 입구(퍼..

    HandlerInterceptor와 HandlerMethodArgumentResolver의 쓰임

    HandlerMethodArgumentResolver HandlerMethodArgumentResolver란? 컨트롤러 메서드에서 특정 조건에 맞는 파라미터가 있을 때 원하는 값을 바인딩해주는 인터페이스이다. 스프링에서의 예를 들자면, Controller에서 @RequestBody 어노테이션을 사용해 요청을 받아올 때, @PathVariable 어노테이션을 사용해 Path variable을 받아올 때 HandlerMethodArgumentResolver를 사용해 값을 받아온다. HandlerMethodArgumentResolver를 커스텀해서 사용하려면? 컨트롤러에서 특정한 객체가 파라미터로 존재 시, 원하는 값을 바인딩하는 커스텀 HandlerMethodArgumentResolver를 등록해보자. 어노..