Home
디피의 개발일지
Cancel

lombok 사용시 주의점

lombok은 @Getter, @Setter 같은 애노테이션 기반으로 Getter/Setter 메서드를 자동으로 생성해주는 편리한 라이브러리이다. 하지만 편리함에 남용하는 애노테이션들이 있다. lombok 사용 시 주의해야할 애노테이션 @AllArgsConstructor 클래스에 존재하는 모든 필드에 대한 생성자를 자동으로 생성한다. @All...

json 응답 시 특정 필드 빼고 보내기

스프링에서는 Http 메시지 컨버터를 통해 사용자가 보낸 데이터와 서버에서 내보내는 데이터를 자동으로 변환해준다. 만약 다음과 같은 객체를 응답으로 보낼 경우 Content-Type이 application/json이라면, 스프링은 다음 객체를 자동으로 Json 형식으로 바꾸어 내보낸다. @AllArgsConstructor @Getter public...

junit - spy

Mock 객체와는 달리 객체의 특정 메서드만 stub으로 대체할 수 있는 방법을 제공한다. 다음과 같이 만약 테스트 대상 객체의 특정한 메서드를 stub 처리하고 싶을 때 사용한다. @ExtendWith(MockitoExtension.class) public class BoardServiceTest{ @Spy private BoardSe...

equals(), hashCode()

equals()와 hashCode() 메서드는 모든 자바 객체의 부모인 Object 클래스에 정의되어있다. 따라서 모든 자바 객체는 equals()와 hashCode() 메서드를 가지고 있다. equals() 현재 객체와 파라미터로 들어온 객체가 같은 지 검사하기 위해 사용한다. 기본적으로는 두 객체의 메모리 주소가 같아야 동일한 객체가 된다. ...

Content-Disposition

HTTP Response Body에 오는 컨텐츠의 기질/성향을 알려주는 HTTP 헤더 속성이다. inline : 디폴트 값. body에 있는 값이 웹 페이지에 표시되어야한다는 뜻. Content-Disposition : inline 최신 브라우저에서 <a> 태그의 download 속성은 Cont...

스프링 캐시

[spring] 스프링 캐시 캐시란 반복적으로 데이터를 불러올 때 지속적으로 DBMS 혹은 서버에 요청하는 것이 아닌 메모리에 데이터를 저장하였다가 데이터를 불러다가 쓰는 것을 말한다. 서버나 DBMS의 부담을 줄여주고, 메모리에 저장되어있기 때문에 많은 시스템에서 사용할수 있다. 캐시는 Long Tail 법칙에 따라 시스템 리소스 사용의 대부분을...

PathPattern과 servletPath

[spring] PathPattern과 servletPath 문제 다음과 같이 interceptor를 등록할 때, addPathPatterns()에 /api/**를 등록하였지만, /api/article을 요청했을 때 인터셉터가 제대로 동작하지 않았다. 하지만 /**로 등록하니 제대로 동작하였다. public void addInterceptors(...

checked vs unchecked exception

[java] checked vs unchecked exception 자바에서 프로그램에 이상이 있을 때 던져지는 Throwable은 Error와 Exception이 있다. Error : 시스템이 비정상적인 상황에 있다는 것을 의미. 시스템 레벨에서 발생하는 심각한 오류이기 때문에 개발자가 미리 예측하거나 처리할 수 없다. ...

HPA

[devops] HPA HorizontalPodAutoscaler의 약자로, k8s에서 CPU 사용률을 체크하여 Pod의 개수를 스케일링하는 기술이다. 지정한 메트릭을 controller가 체크하여 부하에 따라 필요한 pod의 replica 수가 되도록 자동으로 pod 수를 늘리거나 줄일 수 있는 기술이다. Auto scaling Auto s...

Helm

Helm Kubernetes 패키지 관리를 도와주는 도구. node.js의 npm과 같은 역할을 수행한다. Helm을 사용하면 쿠버네티스 클러스터에서 동작하도록 작성된 패키지들을 관리할 수 있다. 즉, Helm을 사용하면 클러스터에 배포한 애플리케이션을 쉽게 설치, 업데이트, 삭제할 수 있다. 일반적으로 쿠버네티스는 여러 오브젝트로 구성되어있는데...