들어가며 일반적으로 Spring boot에서 Get방식(혹은 쿼리파라미터가 필요한) 요청을 받을 때 사용되는 어노테이션에는 @RequestParam, @PathVariable, @ModelAttribute가 있다. 파라미터의 개수가 적은 경우에는 앞의 두개 어노테이션으로 충분하지만 파라미터가 많아질 수록 객체로 요청을 받는게 가독성 측면에도 관리 측면에도 수월해지기 때문에 @ModelAttribute를 사용한다. 종종 @ModelAttribute를 사용하면서 헷갈리거나 잊어버리는 개념이 있어 이번 포스팅에서는 @ModelAttribute 어노테이션에 대해 공부해보고자 한다! @ModelAttribute 사용 이유 요청을 받을 때 다음과 같이 파라미터의 개수가 적다면 @RequestParam 어노테이션으로..
spring boot
들어가며 WebClient는 RestTemplate의 대안으로서 급부상된 WebFlux의 라이브러리이다. Spring MVC에서도 지원하는 WebClient는 RestTemplate과 비교했을 때 가장 큰 장점이 `비동기 통신을 지원한다`는 점이 아닐까 싶다. 물론 그 외에도 함수형 프로그래밍 스타일을 지원한다는 점, 다양한 설정과 에러처리를 지원한다는 점 등도 장점으로 꼽을 수 있겠다. WebClient의 최대 장점인 비동기 통신을 지금까지 사용하기 어렵고 쓸 데가 없다는 이유만으로 동기 방식을 고수해왔었는데 이번 회사 프로젝트를 하면서 비동기 통신이 필요해진 시점이 생겼다. 이번 기회에 WebClient의 비동기 통신을 구현해보았고 이번 포스팅의 주제로 삼아보고자 한다. 처음 비동기 통신을 구현해보았..
들어가며 회사에서 개발 중인 서비스가 통신하기 위한 서버가 특정 서버에서만 접근 가능한 상황이었다. 백그라운드에서 동작하는 (유저가 접근하지 않아도 되는) 어플리케이션은 그 특정 서버에 서비스를 띄워서 서로 통신이 가능한 방식을 사용하고 있었지만 개발 중인 서비스가 동작 중인 서버는 별도의 서버로 분리가 되어있었고, 이 서버는 정책상 특정 서버에서 인바운드가 막혀있는 상태였다. 조금 복잡한데 아무튼 개발 중 서비스 -> 타겟 서버로의 직접 접근이 안된다는 말이다. 이 문제를 해결하기 위해서는 타겟 서버로의 접속을 우회하는 방식을 사용해야하는데 이걸 SSH 터널링이라고 한다. 이번에는 SSH 터널링의 개념과 필요성, 구현 예시에 대해 작성해보고자 한다. SSH (Secure Shell) 시큐어 셸(Secu..
들어가며 @Valid 어노테이션으로 유효성 검사를 해주고 예외 처리를 해주지 않으면 사진과 같이 에러 로그가 그대로 노출되어버린다. 이렇게 되면 클라이언트 입장에서 유용한 정보를 주기도 어렵고, trace에서 운영환경에서의 구현이 노출되기 때문에 해커의 위협에서 벗어나기 어렵다. 따라서 적절하게 예외 처리를 함으로써 에러 응답을 변경해 줄 필요가 있고, 이 예외 처리 방법 중 가장 좋은 방식이 @RestControllerAdivce (혹은 @ControllerAdvice)어노테이션과 @ExceptionHandler를 함께 사용하는 방식이라고 한다. 다양한 예외처리 방법과 @RestControllerAdivce 어노테이션을 사용하는게 가장 좋은 이유는 다음 글을 참고하자. [Spring] Spring의 다..
반응형