개발을 하다보면 json 데이터를 주고 받을 때 똑같은 가공 과정을 거쳐야 하는 경우가 있다. 함수로 가공 과정을 정의해 매번 함수를 호출해줘도 되지만 spring에서는 그러한 경우에 쓰라고 @JsonSerialize, @JsonDeserialize 어노테이션을 제공해주고 있다. @JsonSerialize @JsonDeserialize 딱 어노테이션 네이밍에서 볼 수 있듯이 Json 데이터를 주고 받을 때 Serializer, Deserializer에 대해 정의할 수 있는 어노테이션이다. @JsonSerialize, @JsonDeserialize는 함수, 필드, 파라미터 등에 붙여서 쓸 수 있다. 간단하게 아래와 같이 사용한다. @JsonSerialize(using = TestSerializer::cla..
spirng cloud gateway에서는 리퀘스트에 대해 filter를 적용해 상황에 따라 특정한 동작을 할 수 있다. custom filter들도 만들 수 있는데 spring cloud gateway 라이브러리에 기본으로 제공해주는 filter들이 몇 개 있다. 그 중에서 제일 많이들 사용하고 게이트웨이 서버 에러 처리를 위해 한 번쯤은 다룰 수밖에 없는 RetryGatewayFilterFactory에 대해 간단하게 정리해보려 한다. RetryGatewayFilterFactory spring cloud gateway에서 제공해주는 기본 filter로 게이트웨이를 거쳐간 요청에서 에러가 발생했을 시 retry하기 위해 사용하는 filter이다. RetryGatewayFilterFactory는 아래와 같..
오랜만의 기술 블로그... 뭔가 조금이긴 하지만 댓글도 달리고 방문자 수도 평일 기준 300~400 선으로 유지되니 다시 관리를 열심히 해봐야겠다.. (현생...!!) 최근에 회사에서 FeignClient를 사용했다.FeignClient에 대해 나중에 다시 정리를 해서 글을 올릴테지만 간단하게 설명하면 OkHttpClient, Apache HttpClient와 같은 http client를 손쉽게 쓸 수 있도록 하는 client builder라고 보면 된다. (neflix에서 만들었다.)http request를 손쉽게 요청하고 받을 수 있는 만큼 connection timeout, read timeout을 설정할 수 있는데 이 설정을 application.properties(yml)으로 설정하는 것이 아..
요즘 도커와 쿠버네티스를 모르는 개발자는 없다. 써보지 않았더라도 적어도 들어봤을 것이다. 나도 도커와 쿠버네티스에 대해 주변에서 이야기를 많이 해 들어보긴 많이 들어봤지만 지금까지 한 번도 직접 설정하고 사용해본 적은 없다. 그래서 이제부터 공부를 하고 정리를 해보려 한다. Docker란? 도커란 애플리케이션을 개발하고 배포하기 위한 오픈 플랫폼이다. 애플리케이션을 실행 시점의 구성을 도커 이미지라는 것으로 고정 시키고 그 이미지를 컨테이너라는 것으로 띄워 배포시킬 수 있다. Docker Image(도커 이미지) 도커 이미지는 도커 컨테이너를 실행시킬 때 읽는 설정 파일이다. 여기에는 실행할 때 필요한 명령어와 포트 등이 포함되어 있다. 이 이미지로 독립된 인스턴스인 컨테이너를 여러 개 띄울 수 있다...
내가 필요로 하는 노드 버전과 로컬의 버전이 맞지 않아 nvm으로 필요로 하는 버전의 노드를 설치하고 IntelliJ 프로젝트를 실행해봤지만 여전히 로컬에 설치했던 높은 버전의 노드만 인식했다. 구글링을 해보니까 이런 현상을 겪은 사람이 꽤 있었고 사람들이 제시하는 여러 방법들을 종합해서 해결해 정리해보려 한다. 문제 프로젝트에 필요한 노드는 10.15.3 버전이었고 내가 처음에 로컬에 설치한 노드는 16.14.2 버전이었다. nvm으로 10.15.3 버전을 새로 설치하고 사용하도록 설정을 해서 로컬에서 iterm으로 조회해보면 10.15.3 버전이 잘 나왔지만 intellij의 터미널에서 조회해보면 게속 처음에 설치했던 16.14.2 버전이었다. Preferences에 들어가서 10.15.3 노드를 사..
DB에 연결해서 데이터를 가져오는 것에 아무 생각 없이 @Repository 어노테이션을 붙여서 개발을 하고 있었다. 그러던 중 지인이 @Mapper와 @Repository의 차이에 물어왔고 생각해보니 그 둘의 차이점을 몰라 구글링을 해보다보니 두 어노테이션은 크게 차이가 없지만 Repository와 Mapper 간에는 차이가 있다는 것을 알고 정리를 해보려한다. 애초에 구글링해서 나오는 글들은 javadoc을 그대로 번역하거나 뭔가 내 기준으로 와닿지 않아서 내 말로 정리하는게 필요할 것 같다. Mapper란 우선 repository와 Mapper를 비교할 때 mapper가 작은 단위이다. 밑에서도 설명할테지만 repository는 mapper를 포함하고 있다. mapper는 00.xml과 같이 sql..
지금까지 개발을 하면서 테스트 코드 짜는 것을 같이 병행하지 않았지만 최근 들어 테스트 코드를 작성하는 버릇을 들이기 시작했다. 그 중 메소드 분리 및 알맞은 접근제어자를 사용하기 위해서는 단위 테스트가 중요한데, 이 단위 테스트를 하다보면 당연히 해당 로직과는 상관없는 DI 되는 다른 객체들의 로직을 무시하기 위해 Mockito를 사용하게 된다. static 함수 처리의 경우 PowerMokito 또는 MockedStatic을 이용하는 방법 이렇게 두 가지가 있는데 여기서는 MockedStatic을 이용하는 방법에 대해 정리해보겠다. mockito core, inline dependency MockedStatic은 mockito 안에 있는 클래스이다. 스프링부트 프로젝트(모듈)을 생성하면 기본으로 sp..
빌더 패턴(Builder pattern)이란? 객체를 정의하고 그 객체를 생성할 때 보통 생성자를 통해 생성하는 것을 생각한다. Bag bag = new Bag("name", 1000, "memo"); 하지만 생성자를 통해 객체를 생성하는데 몇 가지 단점이 있어 객체를 생성하는 별도 builder를 두는 방법이 있다. 이를 빌더 패턴이라고 한다. Bag bag = Bag.builder() .name("name") .money(1000) .memo("memo") .build(); 객체를 생성할 수 있는 빌더를 builder() 함수를 통해 얻고 거기에 셋팅하고자 하는 값을 셋팅하고 마지막에 build()를 통해 빌더를 작동 시켜 객체를 생성한다. 빌더를 써야하는 이유 객체를 생성하는 방법이 생성자말고 빌더..
- Total
- Today
- Yesterday
- 공간데이터
- annotation
- HttpClient
- MAC
- 역직렬화
- rabbitmq
- Java
- Spring
- 데이터베이스
- 캐싱
- PostgreSQL
- cache
- Intellij
- ssh
- mockito
- 스프링부트
- 메시지큐
- postgres
- Caching
- 자바
- DB
- eclipse
- enum
- springboot
- k8s
- 캐시
- JPA
- 어노테이션
- DATABASE
- 이클립스
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |