일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Spring Boot
- @FunctionalInterface
- jpa
- spring
- elasticsearch
- Spring JPA
- CompletableFuture
- DeferredImportSelector
- SpringMVC
- EnableWebMvc
- java list
- micrometer tracing
- java.util.list
- ResponseBody
- Sleuth
- map
- list
- grpc
- spring MVC
- HashMap
- traceasynccustomautoconfiguration
- traceId
- asyncconfigurer
- awssecretsmanagerpropertysources
- aws secretmanager
- kotlin
- asynccustomautoconfiguration
- java
- java lambda
- wire type
- Today
- Total
목록스프링 (31)
du.study기록공간

저번 Exeption처리 방법으로 AbstractHandlerExceptionResolver를 사용하는 방법으로 포스팅을 한 적이 있습니다. 관련 글 : https://duooo-story.tistory.com/15 이번에는 @ControllerAdvice, @ExceptionHandler 를 사용한 Exception방법에 대해서 기록하려 합니다. 먼저 @ControllerAdvice 는 전역 컨트롤러로 불러며, 컨트롤러 공통적으로 사용할 것이 있을때, 해당 어노테이션을 사용할 수 있습니다. 예를 들면 다음과 같은 상황에서 사용할 수 있습니다. 1. Exception 처리 2. @InitBinder를 이용한 설정세팅 ( 이전 포스팅에서 언급한 적이 있지만, 너무 다양한 기능을 지원해주기에 추후에 포스팅으..

각각의 컨트롤러에서 Exeption 개별적으로 처리한다는 건 중복되는 코드도 많아질뿐더러 관리하기가 상당히 까다로운것 같아 Exception을 처리하는 방법에 대해 고민 및 조사를 했었습니다. 그래서 이번에는 Exeption에 대해서 공통으로 처리하는 방법 두가지에 대해서 기록하려 합니다. 1. AbstractHandlerExceptionResolver 를 사용하는방법 2. @ControllerAdvice, @ExceptionHandler를 이용하는 방법 먼저 AbstractHandlerExceptionResolver 를 이용하는 방법에 대해서 기록하겠습니다. 우선 AbstractHandlerExceptionResolver를 extends받는 클래스를 생성 후, 이 클레스를 implements WebMv..
저번 포스팅에서 @Validated and BindingResult에 대해서 기록한적이 있습니다. https://duooo-story.tistory.com/11

이번에는 모델의 검증작업, 모델 바인딩 과정에서 발생되는 에러의 결과를 저장해주는 BindingResult에 대해서 기록하려 합니다. 만약 이런 해당사항의 컨트롤러,도메인이 있다고 가정하겠습니다. @GetMapping("/success-test") @ResponseBody public String errorBindTest(@Validated TestDomain domain , BindingResult bindingResult){ if(bindingResult.hasErrors()){ return bindingResult.getAllErrors().get(0).getDefaultMessage(); } return "success"; } @GetMapping("/error-test") @ResponseBod..

저번 글에서 ResponseBody응답으로 간단한 Spring타입에 대해서 리턴받는 방식을 기록한 적이 있습니다. (해당글은 여기에 :https://duooo-story.tistory.com/9) 이번에는 일반적으로 사용되는 Object를 json형태로 return 받는 방식에 대해서 살펴보려 합니다. @RequestMapping("/jackson") @ResponseBody public TestDomain helloObject() { // 뭔가를 받아와서 도메인을 만들었다 가정하고.. TestDomain tobj = new TestDomain("du",10); return tobj; } 만약 @EnableWebMvc ,WebMvcConfigurer등에대한 기본 설정만 한 상태라면 다음과 같은 에러를 맞..
API를 만들때, Json형태의 응답값을 내려주기 위하여 @ResponseBody 라는 어노테이션을 사용합니다. 이 어노테이션을 사용하면 본문 자체를 응답값으로 내려주기에 유용하게 사용하고 있지만. 정확하게 어떻게 동작하는지를 확인하기 위해서 내부 동작을 확인해보려고 합니다. 그중에서도 현재 RequestMappingHandlerAdapter 를 사용하는 케이스만 구현하고 있어 먼저 이 핸들러 어뎁터 기준으로 디버깅을 하여 확인한 결과를 작성합니다. 결론부터 간략하게 정리해보면 다음과 같습니다. 1. DispatcherServlet에서 핸들러 어뎁터(RequestMappingHandlerAdapter) 실행 2. HandlerMethodReturnValueHandler에서 RequestResponseBo..

이번에는 핸들러 인터셉터에 대해서 기록하려 합니다. Spring에서는 Interceptor라는 기능을 제공하는데, 이 Interceptor를 통해서 dispatcher로 들어온 요청들을 가로챈다음 특정 작업을 진행할 수 있게 도아줍니다. 이를 통해서 요청의 전,후 처리가 가능하며, 필자는 현재 로그인, 각 api별 권한확인 등을 위해서 Interceptor를 사용하고 있습니다. Interceptor 를 사용하려면 Class에 implements HandlerInterceptor 를 지정해준 후, 관련 메서드에 기능을 구현해야 합니다. public class FirstIntercepter implements HandlerInterceptor { @Override public boolean preHandle..

이번에는 @EnableWebMvc에 대해서 기록해 놓으려고 합니다. @EnableWebMvc를 살펴보면 다음과 같이 선언이 되어있습니다. @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.TYPE) @Documented @Import(DelegatingWebMvcConfiguration.class) public @interface EnableWebMvc { } @Import(DelegatingWebMvcConfiguration.class)해당 부분을 Import하게 되는데 해당 클레스와 그 속에서 상속하는 WebMvcConfigurationSupport를 보면 MVC에서 필요한 기본적인 세팅을 해주거나, 웹 관련 설정을 커스터마이징 할 수 있도록 기능을 ..

최근 스프링을 사용하면서 web.xml에 설정을 하고 코딩을 하는경우가 아에 없어졌다. 사실 스프링부트가 상용화되는 요즘에 web.xml이 왠말인가... 당장 내가 쓰는 프로젝트의 모든 빈을 web.xml에 등록한다 생각하니 상상만으로 충분히 끔찍하다. 이번엔 web.xml을 사용하지 않고 MVC를 사용하는 케이스를 기록하려 합니다. 먼저 Spring Project 생성을 위하여 Intellij 에서 maven project를 생성 후, spring, servlet등에 대한 정보를 넣어줬습니다. 4.0.0 do.spring testProject 1.0-SNAPSHOT war junit junit 4.11 test javax.servlet javax.servlet-api 4.0.1 provided org...
공부한 내용을 꾸준히 블로그에 쓴다해놓고 어느순간 블로그와 멀어지는것을 느꼈다.. (기록을 안하면 까먹는것을.. 분발하자) 신입으로 입사하고 꾸준히 Spring을 메인 프레임워크로 사용해왔는데, 추가 요구사항에 대한 기능구현에만 바쁘고 사용하는 스프링의 원리조차 제대로 모르고 사용하는것을 느꼈다.... 그래서 이번엔 스프링 MVC의 기초가되는 DispatcherServlet부터 정리해보고자 한다. 당장 Spring MVC의 메인이 뭐냐라고 하면 말할 수 있는건 DispatcherServlet 이라고 말할 수 있을것 같다. 간단하게 설명하면 Front Controller 의 역할을 담당하는 서블릿이다. ( 모든 요청은 Front Controller를 먼저 거치게되며, 이곳에서 요청에 맞는 클레스를 찾고 메..