Spring Framework
-
Spring Filter Security로 인가처리 - Spring Filter Hands On 3Spring Framework/Filter 2023. 10. 6. 00:01
개요 Spring Security Hands On 시리즈에 들어가야 할 내용 같다고 생각하지만.. Spring Security를 활용하면 조금 더 편리하게 인가처리가 가능하기 때문에 소개하고자 합니다. Spring Security 의존성 추가 implementation("org.springframework.boot:spring-boot-starter-security") 테스트용 Controller 구현 @RestController class AuthorizationTestController { @GetMapping("/admin/admin-path") fun onlyAdmin(@RequestHeader role: String): String{ return "접근 가능" } @GetMapping("/use..
-
Spring Filter Header 인가 처리 - Spring Filter Hands On 2Spring Framework/Filter 2023. 10. 5. 00:01
개요 Spring Filter의 정의에 이어 실습으로 컨트롤러를 구성하고 헤더를 받아 컨트롤러 별 인가를 처리해보려고 합니다. 해당 방법 이외에 Spring Security를 활용할 수도 있습니다. Filter에서 범위가 조금 벗어난다고 생각이 들지만 다음 챕터에서 한번 다루어 보려고 합니다. Controller 세팅 @RestController class AuthorizationTestController { @GetMapping("/admin-path") fun onlyAdmin(@RequestHeader role: String): String{ return "접근 가능" } @GetMapping("/user-path") fun onlyUser(@RequestHeader role: String): St..
-
Spring Filter란? - Spring Filter Hands On 1Spring Framework/Filter 2023. 10. 4. 00:01
개요 Spring은 중복된 코드를 제공하기 위해 공통적인 작업을 수행하는 많은 기능들을 제공합니다. 필터, 인터셉터, AOP 등이 제공되는데 여기서 Filter에 대해서 알아보고자 합니다. Filter의 개념을 알아보고 실습을 통해 Hands On 시리즈를 작성해보고자 합니다. Spring Filter란? Spring Filter를 사용하면 Client의 요청이 Controller에 도달하기 전에 특정작업을 수행하거나, Controller가 Client로 다시 보내는 응답에 대해 부가작업을 수행할 수 있도록 지원합니다. 엄밀히 말하면 Dispatcher Servlet에 도달하기 전후로 부가작업을 수행합니다. Request 값, Response 값 로깅 request Body와 header의 포맷팅 Aut..
-
RestTemplate Retry와 Interceptor 동작원리 - RestTemplate Hands On 8Spring Framework/RestTemplate 2023. 9. 30. 00:01
개요 Retry와 Interceptor의 동작원리에 대해 알아보고자 합니다. Interceptor의 등록 public RestTemplateBuilder additionalInterceptors(ClientHttpRequestInterceptor... interceptors) { Assert.notNull(interceptors, "interceptors must not be null"); return additionalInterceptors(Arrays.asList(interceptors)); } additionalInterceptors 메서드를 통해 인터셉터가 추가됩니다. ClientHttpRequestInterceptor는 Spring 3.1부터 사용가능하며 해당 인터페이스를 구현하여 RestTem..
-
RestTemplate Retry 실습 - RestTemplate Hands On 7Spring Framework/RestTemplate 2023. 9. 29. 00:01
개요 일시적인 네트워크 이슈로 에러가 발생하는 경우에는 한 번만 실패하고 끝내야 할까? 이런 경우에는 한번 더 재시도하면 성공할 가능성이 있습니다. RestTemplate Retry는 어떻게 가능할까요? 떠오르는 가장 간단한 방법 @RestController class RestTemplateRetryTestController( private val restTemplate: RestTemplate, ) { @GetMapping("time-out-retry") fun timeOut(){ val url = "http://localhost:8080/time-out-retry-test" var responseEntity: ResponseEntity try { responseEntity = restTemplate...
-
RestTemplate Timeout - ResetTemplate Hands On 7Spring Framework/RestTemplate 2023. 9. 28. 00:01
개요 만약 호출하는 서버에 네트워크에 문제가 생겨서 응답시간이 지연되거나, 장애로 응답시간이 지연되는 경우 어떻게 처리해야 할까요? 무한정 대기를 하게 되면 쓰레드를 점유하게 되어 서버의 자원도 낭비되고, 유저가 응답을 받기까지 무한정 대기할 수도 없습니다. @RestController class RestTemplateTimeoutTestController( private val restTemplate: RestTemplate, ) { @GetMapping("time-out") fun timeOut(){ val url = "http://localhost:8080/time-out-test" val newCreateRestTemplate = RestTemplate() newCreateRestTemplate...
-
RestTemplate Error Handling - RestTemplate Hands On 6Spring Framework/RestTemplate 2023. 9. 27. 00:01
개요 이전 글들에서는 RestTemplate의 Get, Post, Delete 등에 대해 알아보았습니다. 이번 글에서는 RestTemplate Error Handling에 대해 알아보고자 합니다. 에러는 매우 다양하게 발생할 수 있습니다. 일시적인 네트워크 에러, 호출하는 서버의 다운, 잘못된 요청 등등.. 에러를 발생시키는 코드 @RestController class RestTemplateErrorHandling { val baseUrl = "localhost:8080" @GetMapping("/error-handle") fun errorHandle(){ val apiUrl = "/error-handle-test" val restTemplate = RestTemplate() val responseEnt..
-
RestTemplate Post Request - RestTemplate Hands On 4Spring Framework/RestTemplate 2023. 9. 24. 00:01
개요 이전 글에서는 RestTemplate을 활용하여 Get 요청의 QueryParam, PathVariable, Header등에 대해 학습했었습니다. 이번 글에서는 RestTemplate Post Request에 대해 학습해 보겠습니다. RestTemplate Post로 요청 보내기 @RestController class RestTemplatePostTestController { val baseUrl = "http://localhost:8080" @PostMapping("post-test") fun postTest() { val apiPath = "/post-test-call" val restTemplate = RestTemplate() val person = Person() val headers = ..