전체 글

전체 글

    @WebMvcTest에 대한 올바른 사용법 및 시행착오

    이번에 @WebMvcTest를 사용하면서 겪은 시행착오를 공유해 볼 예정이다. @WebMvcTest란? @WebMvcTest는 Spring Controller 영역에 대한 HTTP 요청만을 단위 테스트할 때 필요한 Bean들만 올려주는 기능을 가진 어노테이션이다. 실제 테스트는 MockMvc를 통해서 수행한다. MockMvc는 HTTP 서버 요청을 직접하는 것이 아니라 컨트롤러에 대한 메소드만을 딱 잘라서 테스트하는 기능이라고 보면 된다. 속도 측면에서 @SpringBootTest를 사용하면서 MockMvc를 사용하면 모든 Spring Bean을 전부 로드해서 느리다는 단점이 있지만 @WebMvcTest는 웹 계층에서 필요한 빈들만 로드하는 기능을 가지고 있어서 불필요한 Bean들은 로드되지 않아 테스트..

    Spring Actuator + Prometheus + Grafana

    이전에 Actuator로 무식하게 데이터를 확인했다면 이제는 위의 두 서버를 받아서 로그를 시각화해서 보자! 아래는 윈도우 기준이지만 크게 상관없다. 연결 샘플 프로젝트는 아래 깃헙을 참조. GitHub - stir084/spring-grafana-prometheus: grafana-prometheus sample grafana-prometheus sample. Contribute to stir084/spring-grafana-prometheus development by creating an account on GitHub. github.com 설치 https://grafana.com/grafana/download?platform=windows https://prometheus.io/download/ ..

    Spring Actuator와 Thread(+@Scheduled)

    이번에 Spring Actuator를 써보면서 Thread 측면에서 잘못 알고 있었던 점을 바로 잡고 배웠던 점을 공유하려고 한다. Actuator 설정 implementation 'org.springframework.boot:spring-boot-starter-actuator' 우선 스프링부트에서 위와 같이 의존성을 추가해 준다. http://localhost:8080/actuator 그리고 스프링부트를 실행시키고 위의 링크를 들어가 보자 /actuator/로 접속 시 오류가 발생하니까 정확히 /actuator로 들어가자. 그럼 위와 같은 화면이 나타난다. 아직은 보이는 정보가 그렇게 많지 않을 것이다. management.endpoints.web.exposure.include=* # 모든 endpoi..

    디자인 패턴

    개인적으로 개발자가 직접 구현할만한 패턴이라고 느끼는 것들. 팩토리 메소드, 템플릿 메소드, 전략 패턴, 싱글톤, 컴포지트 패턴 전략 패턴 요약 - 결제 방식 동적으로 변경해서 사용하기. interface PaymentStrategy { void pay(int amount); } class CreditCardPayment implements PaymentStrategy { @Override public void pay(int amount) { System.out.println("Paid " + amount + " using Credit Card."); } } class PayPalPayment implements PaymentStrategy { @Override public void pay(int amo..