본문 바로가기

개인적으로 공부한 것을 정리해 놓은 블로그입니다 틀린 것이 있으면 댓글 부탁 드립니다!


반응형

SPRING BOOT

(13)
spring-boot JUnit Test시 유의 할 점 1. Junit 5 에서의 예외상황 Test 테스트 코드 작성시에 예외 상황을 테스트할 때 Junit 4 까지는 해당 테스트의 @Test에 속성으로 excepted=예외클래스이름.class 로 지정하여 해당 예외를 예상하는데 사용했지만 Junit5 부터는 Assertions.assertThrows()를 사용해서 예외 상황을 테스트 한다 . 예외를 받아서 예외 상황에 대해 더 자세히 테스트 할 수 있다 . 자세한 내용은 아래 링크로 https://junit.org/junit5/docs/current/user-guide/ // assertThrows에 첫번째 파라미터로 예상하는 예외 타입과 // 두번쨰 파라미터로 예외가 터질 것으로 예상하는 코드를 excutable로 넣어 준다. @Test void null..
Spring-boot 공부 9 - RestTemplate 활용(Naver Open API 사용) 이전시간에 공부한 RestTemplate를 활용해보려한다 Naver 지역 Api를 활용해서 데이터를 얻어와 보려 한다. 일단 브라우저의 요청을 받을 Controller를 만들었다 . ApiController @RestController @RequestMapping("/api/client") public class ApiController { private final RestTemplateService templateService; public ApiController(RestTemplateService templateService) { this.templateService = templateService; } @GetMapping("/naver") public NaverApiDto naver() thro..
Spring-boot 공부 8 - RestTemplate(Server to Server 간의 통신) Server to Server 간의 통신 백엔드 서버가 클라이언트로서 다른 서버에게 요청을 할때 RestTemplate를 사용한다. spring3.0 부터 지원되었고 , 스프링에서 제공하는 http 통신에 유용하게 쓸 수 있는 템플릿이다 . Http 서버와의 통신을 단순화하고 RESTful 원칙을 지킨다 . jdbcTemplate 처럼 RestTemplate 도 기계적이고 반복적인 코 드를 깔끔하게 정리해준다. 먼저 클라이언트 서버에서의 요청은 sevice 단에서 이루어 지며 UriComponentsBuider를 통해 URI를 생성하고 RestTemplate를 생성해 요청을 만들어낼 수 있다. RestTemplate은 Spring WEB 프로젝트 안에 있는 기능이기 때문에 Spring Web Depend..
Spring boot 공부 6 - interceptor interceptor interceptor는 Filter 와 매우 유사하나 차이점은 ,Web Application context 에서 돌아가는 filter와는 다르게 Spring Context에 등록 되고 그 안에서 동작하기 때문에 Spring Context에 관한 내용을 사용할 수 있다 . 필터와 마찬가지로 선/후 처리가 가능하기 때문에 , 인증 단계를 처리하거나 , Logging을 Service business logic으로 부터 분리 시킬 수 있다 . Interceptor 구현 먼저 인터셉터를 탈 PrivateController와 모두에게 공개되는 PublicController를 만들었다. PrivateController //인증된 사용자만 접근할 수 있는 컨트롤러 @RestController @R..
Spring boot 공부 5 - filter Filter Web Application 에서 관리되는 영역으로 Spring boot Framework에서 Client 로 부터 오는 요청 / 응답에 대해서 최초 / 최종 단계의 위치에 존재하며 , 이를 통해서 요청/응답의 정보를 변경하거나 , Spring 에 의해서 데이터가 변환되기 전의 순수한 Client의 요청 / 응답 값을 확인 할 수 있다. 유일하게 ServletRequest,ServletResponse 객체를 변환 할 수 있다. 주로 Spring 에서는 request/ response의 Logging 용도로 활용하거나 , 인증과 관련된 Logic 들을 해당 Filter에서 처리 한다. 이를 선 / 후 처리 함으로써 , Service business logic과 분리 시킨다. Spring MVC..
Spring boot 공부 4 - Error 데이터 커스터마이징해서 응답 @ExceptionHandler를 통해 예외를 잡아 응답하는 방식을 알아봤었다. 다른 처리를 하지 않는다면 , 기본적인 정보들만 응답이 되기 때문에 해당에러에 대한 정보를 ExceptionHandler 메소드의 파라미터를 통해 뽑아내 json 형식 데이터로 내려 주는 방법을 알아보자. MethodArgumentNotValidException 을 예외처리한다 가정해 봤다 . ExceptionHandler 메소드의 코드는 아래와 같다 @ExceptionHandler(value = MethodArgumentNotValidException.class) public ResponseEntity MethodArgumentNotValidException(MethodArgumentNotValidException e,Ht..
Spring boot 공부 3 - 예외 처리 ControllerAdvice와 @ExceptionHandler Web Application의 입장에서 에러가 났을 때 에러를 내려줄 수 있는 방법은 아래와 같다 1. 에러 페이지 2. 4xx Error or 5xx Error 3. Client 가 200 외에 처리를 하지 못 할 때는 200을 내려주고 별도의 에러 Message를 전달 두 가지 요청이 있다 Get 요청 컨트롤러의 경우 이름과 age를 파라미터로 받는고 age 는 Integer 타입이기 때문에 값이 없다면 null로 들어오게 된다 . setAge 부분에서 NullPointerExcetion(NPE라고 하겠다)이 발생할 것이다 . 요청과 응답 결과는 아래 그림과 같다 서버쪽에서 NPE 가 발생했기 때문에 500 에러가 발생했다 기본적인 정보는 들어가 있지만 어떤에러가 발생했는지는 알 수 없다. Post ..
Spring boot 공부 2 - validation 과 custom validation 만들기 스프링이 요청데이터에 대한 검증을 해줄 수 있다 . 컨트롤러로 들어오는 요청데이터를 파라미터로 지정된 오브젝트에 어노테이션을 활용해 검증할 수 있다 . validation 을 사용하기 위해선 maven 혹은 gradle에 dependency를 추가해줘야한다 . maven dependency org.springframework.boot spring-boot-starter-validation //메이븐 gradle dependency dependencies { implementation 'org.springframework.boot:spring-boot-starter-validation' implementation 'org.springframework.boot:spring-boot-starter-web' t..

반응형