Spring

Spring

[Spring] Error : Spring Batch Jackson2 ExecutionContext Serializer (실행 컨텍스트를 직렬화/역직렬화할 수 없음)

문제 상황 에러 로그 Caused by: java.lang.IllegalArgumentException: The class with java.util.ImmutableCollections$ListN and name of java.util.ImmutableCollections$ListN is not trusted. If you believe this class is safe to deserialize, you can add it to the base set of trusted classes at construction time or provide an explicit mapping using Jackson annotations or a custom ObjectMapper. If the serializati..

Spring

[Spring] WebClient 적용기

WebClient 란? API를 호출하기 위해 사용되는 Http Client 모듈 중 하나 왜 WebClient 가 필요한가? 현재 Java에서 가장 많이 사용하는 Http Client는 RestTemplate 입니다. 그런데 Spring 5.0 버전부터는 RestTemplate 은 유지 관리 모드로 변경되었습니다. Spring 에서는 RestTemplate 의 대안으로 WebClient 사용을 강력히 권고하고 있습니다. WebClient 는 논블로킹/블로킹 모두 지원합니다. 동작 원리 WebClient 의 동작 원리를 알려면 먼저, RestTemplate 의 동작 원리를 알아야 합니다. RestTemplate Multi-Thread, Blocking 요청 Thread Pool은 애플리케이션 구동 시에 ..

Spring

[Spring] 비동기 처리(Controller) With @Callable

스프링에는 비동기 구현체가 여러가지 있는데 Controller 단에서 간단하게 비동기 요청을 처리할 수 있는 @Callable을 알아보고자 합니다. @Callable ? Spring MVC 3.2부터 추가된 Servlet 3을 기반으로한 비동기 요청 프로세스 - 요청 프로세스 답게 내부(Service단)를 비동기화 시켜주진 않습니다. Callable의 특징 Thread가 Spring MVC 내에서 관리된다.(내부 TaskExecutor) Controller의 RequestMapping method에서 Callable 객체를 감싸서 리턴한다. Callable의 동작 방식 컨트롤러에 요청이 들어오면 값을 반환하는 대신 Callable 을 먼저 반환한다. Spring MVC는 내부 TaskExecutor에게 ..

Spring

[Spring] Multipartfile, Json 동시에 전송하는 방법 2가지

프로젝트를 진행하며 이미지 파일을 다룰 일들이 있었는데요 이번 포스팅에서는 많은 시행착오를 통해 제가 알게된 이미지 파일과 Json Data를 함께 전송하는 방법 2가지를 정리해보겠습니다. 1. 모든 값 Form-Data로 전송 제가 처음 시도해본 방법입니다. 위의 말 그대로 모든 값을 Form-Data로 전송하는 것입니다. Postman을 이용하여 보여드리겠습니다. 이때 이미지 파일을 보내는 Key값은 Text가 아닌 File로 변경해주셔야 합니다. 이제 Controller를 구현해보겠습니다. @PostMapping("/upload") public void post(@ModelAttribute PostRequestDto postRequestDto){ postService.post(postRequestD..

Spring

[Spring] Junit4, Junit5 Test코드의 차이(Trouble Shooting)

강의를 보며 Test코드를 작성하다가 에러가 떴다. 강사님은 개발 환경이 Junit4 사용중 이었고, 반면 나는 Junit5 이었다. (Spring Boot 2.2.x 부터는 Junit5이 기본설정) 그렇기에 test파일을 만들때 Junit4을 선택하고 gradle 설정을 Junit4에 맞춰 fix하였다. (Intellij fix 자동 기능 사용) (이 시점부터 문제가 시작된거 같다..) 문제를 해결하는 과정을 하나의 글로 정리해보았다. 1. Junit4, Junit5는 모듈이 다르기 때문에 import문이 다르다. @Test 어노테이션을 적고 import할때 두 개의 import문이 떴다. (Junit4 라이브러리도 갖고 있었기 때문) -> Junit4 import문 선택 (강의를 보고 코드를 작성하였..

Spring

[Spring] Spring Boot 기본 MVC Pattern

MVC란? (Model View Controller) Model : 실제 정보의 흐름 - 데이터 처리 View : 정보를 View에 담아 사용자에게 html형태로 제공한다. - 페이지 생성 Controller : 요청을 받아 Model의 상태를 바꾸고 이를 View에 전달한다. - 요청받기 간단한 MVC Pattern을 작성해보자 1. Controller 작성 이전 포스팅에서 생성해 놓았던 TestController에 localhost:(포트번호)/name 을 호출하면 model에 key : name, value : "엄준식" 을 저장하는 코드 return 에는 name.html 파일을 생성할 것이니 name을 적어준다. 2. html 파일 작성 경로 : main/resources/templates 위의..

Spring

[Spring] @RestController 사용해보기

1. @RestController 이란? 한마디로 정리하자면 @Controller + @ResponseBody 결합된 어노테이션이다. 따라서 주용도는 객체 데이터를 반환하는 것이다. 2. @RestController을 이용하여 객체 전송하기 Member class를 생성하고, Getter, Setter 를 생성해준다. ExRestController class 위에 @RestController 어노테이션을 적어준다. 이제 파라미터 데이터 전달 방식으로 값을 받아 오겠다. 확인결과 json파일 방식으로 객체가 잘 반환된 것을 볼 수있다 !! 2-1. @RestController를 이용하여 Map 전송하기 Map 객체를 생성해주고 값을 넣어준다. 잘 전송되었다 !!

Spring

[Spring] Controller 요청방식 정리(@RequestMapping/@GetMapping/@PostMapping)

API를 만들기에 있어 2가지 요청 방식이있다. 1. 기존 방식인 @RequsetMapping을 사용하는 방식과 2. @GetMapping, @PostMapping, @PutMapping, @DeleteMapping을 사용하는 방식 (스프링 4.3부터 등장) 1. @RequsetMapping 방식 @RequestMapping(value="경로" ,method=RequestMethod.GET) >> GET방식 @RequestMapping(value="경로" ,method=RequestMethod.GET) >> POST방식 2. @GetMapping, @PostMapping @GetMapping("경로") >> GET방식 @PostMapping("경로") >> POST방식 근데 여기서 우리는 의문을 가질 수..

leeggmin
'Spring' 태그의 글 목록