작은 규모의 서비스를 개발한다면 서버와 클라이언트 간 호출이 대부분일 것이다. 하지만 더 큰 서비스가 될 수록 서버와 서버간 HTTP 호출이 필요해진다. 서버 아키택처가 MSA와 같은 형태라면 정말 많이 사용할 것이다. Spring boot에서는 다른 서버의 API endpoint를 호출할 때 RestTemplate을 많이 쓴다. 이 글에서는 RestTemplate을 활용하여 다른 서버를 호출하는 서비스 예제를 다뤄볼 것이다. 시작하기 전에, RestTemplate을 잘 모른다면 여기를 참고하자. 이 예제는 JAVA 11로 작성되었으며 프로젝트의 전체 내용은 Github에 공유되어있다. 1. 설정하기먼저 Spring boot를 사용하기 위해 build.gradle을 아래와 같이 설정한다.plugins {..
REST API 웹 서버를 개발할 때 모든 Request와 Response를(Header와 Body 전부!) 하나의 JSON Object formate에 로깅하고 싶을 때가 있다. 이번 포스팅에서는 HttpServletRequestWrapper을 활용한 Request body를 처리기법으로 로깅하는 법에 대해 다루겠다. (How to log whole request and response at once?) 얼핏 생각하면 Request 및 Response를 logging 할 때 aspect를 활용해서 로깅하면 될 것 같다. 그러나 이건 좋은 방법이 아니다. 이유는 크게 두가지인데.. 1. Request와 Response를 한번에 로깅할 수 없다.2. Request의 Stream은 중복해서 읽을 수 없다. ..
애플리케이션에서 설정에 관련된 상수는 소스코드와 별도로 관리하는 것이 기본이다. 설정과 관련된 값을 소스코드 내부에서 관리하면.. 값이 바뀔 때마다 매번 컴파일을 해야해서 번거롭기 때문이다. Spring Boot는 프로젝트 설정에 쓰이는 내용 또는 각종 상수를 .yml 이나 .properties 파일에 저장할 수 있게 지원한다. 이번 포스팅에서는 .properties의 상수를 Enum에 초기화 하는 법을 간단히 알아보겠다. Spring Boot에서 .properties 파일의 값을 가져올 때는 @Value 라는 어노테이션을 쓴다. 이것을 쓰면 Bean 객체가 초기화 될때 @Value에 지정된 값을 해당 프로퍼티에 초기화 한다. setter를 활용해서 초기화를 하는 것도 가능하다. 아래의 간단한 예제를 보..
부제: 인텔리J로 properties파일 인코딩 바꾸는 법, 인텔리J 한글 깨짐 현상 해결 오늘도 Spring boot 실습 도중.. i18n 한번 먹여보겠다고 과감하게 properties파일 생성.. (얼마나 대단한 세계적 웹페이지를 만드려고..........) ▶ 여기까지는 순조로웠었는데.. 문제는 messages_ko.properties에 지정한 한글메시지들이 마구 깨지기 시작했다. 본능적으로 Encoding문제일 것이라고 직감했다. 혼자 낑낑대지 않고 과감히 구글링해서 방법 GET 위와 같이, Setting > Editor > File Encodings에서 properties가 저장된 경로를 찾아, 붉은색 표시를 한 곳을 UTF-8로 바꿔주면 된다. 생각보다 간단하게 해결되었다. (1시간 반을 해..