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()를 통해 빌더를 작동 시켜 객체를 생성한다. 빌더를 써야하는 이유 객체를 생성하는 방법이 생성자말고 빌더..
코드를 작성하다보면 내가 코드를 제대로 작성하는지, 어디를 고쳐야할지 잘 모르는 경우가 있다. 이는 자만이라기보다는 계속 코드를 보다보면 결국 코드에 익숙해져서 고칠 점을 못 찾는 것이데, 이럴 때 개발자들은 코드리뷰를 하곤 한다. 하지만 일일이 시간을 잡아서 누군가에게 코드 리뷰를 해달라고 할 여건이 안 될 경우에는 코드 리뷰를 잘 못한다. 그래서 자동으로 코드를 분석하고 코드의 수정할 점을 알려주는 앱들이 이것저것 세상에 나왔다. 그 중 하나가 Sonalint이다. SonarLint란 Sonalint, 소나린트는 코드를 분석해서 어디를 고치면 좋을 지 등 단순한 코드 리뷰를 해주는 앱이라고 생각하면 된다. 전체적인 로직에 대한 분석은 불가하고 코드 자체에 대한 정적인 분석만 진행하는 앱으로 단순히 말..
- Total
- Today
- Yesterday
- springboot
- 캐싱
- 데이터베이스
- HttpClient
- 이클립스
- annotation
- JPA
- postgres
- 캐시
- 어노테이션
- 메시지큐
- 역직렬화
- 공간데이터
- MAC
- PostgreSQL
- java8
- eclipse
- cache
- enum
- Spring
- Java
- DATABASE
- Caching
- rabbitmq
- Intellij
- DB
- 자바
- mockito
- 스프링부트
- k8s
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |