[Spring Basic] 동기와 비동기
데이터를 주고받을 때 XML을 자주 사용했는데, XML은 사용하기 복잡하고 태그를 많이 사용해야 해서 XML보다 간단하게 사용할 수 있는 JSON 형식을 사용한다.
JavaScript객체를 서버로 전송하려면 데이터를 전송하기 편한 형식으로 먼저 변환하는 직렬화 과정이 필요하고, 서버가 보낸 데이터를 JavaScript 객체로 변환할 때는 역직렬화가 수행된다.
자바와 자바스크립트간의 데이터 교환을 수행하려면 Jackson, stringify, parse 등 라이브러리와 내장 메서드를 사용해 직렬화와 역직렬화를 수행한다.
동기 방식은 작업을 순차적으로 처리하는 방식이고, 비동기 방식은 여러 작업을 동시에 처리하는 방식이다.
동기 방식은 한 번에 하나의 작업만 처리할 수 있다. 특정 작업이 수행중일 경우 다음 작업은 대기 상태에 머무르게 돼 블로킹 상태가 발생한다. (처리가 완료되면 콜백함수로 알려준다)
비동기 방식은 한 작업이 완료되기를 기다리지 않는다.
작업을 수행시켜놓고 처리됨을 기다리지 않고 바로 다른 작업을 수행할 수 있다.
예시에서 왼쪽이 동기 방식이고 오른쪽이 비동기 방식이다.
스프링 MVC는 기본적으로 동기 방식으로 동작하지만, 쓰레드를 사용해 비동기 방식처럼 동작하도록 할 수 있다.
하지만 제대로 비동기처럼 작동하는건 아니기에 실제로 비동기 방식을 적용하려면 @Async 애너테이션과 CompletableFuture 를 사용해야 한다.
즉, 기본적으로는 동기 방식으로 동작하고 특정 부분은 비동기 방식으로 동작하도록 설정할 수 있다.
스프링 5.0 버전 이상부터는 리액티브 프로그래밍 모델을 지원해 데이터의 흐름과 변화에 따라 시스템이 반응하도록 비동기로 작동하도록 설정할 수 있다.
'Spring > Spring' 카테고리의 다른 글
[Spring Basic] 스프링과 IoC (0) | 2022.08.06 |
---|---|
[Spring Basic] JPA와 AOP (0) | 2022.07.29 |
[Spring Basic] MyBatis (0) | 2022.07.12 |
[Spring Basic] DAO Repository DTO VO Entity (0) | 2022.07.09 |
[Spring Basic] JUnit Test Framework (0) | 2022.07.09 |
댓글
이 글 공유하기
다른 글
-
[Spring Basic] 스프링과 IoC
[Spring Basic] 스프링과 IoC
2022.08.06 -
[Spring Basic] JPA와 AOP
[Spring Basic] JPA와 AOP
2022.07.29 -
[Spring Basic] MyBatis
[Spring Basic] MyBatis
2022.07.12 -
[Spring Basic] DAO Repository DTO VO Entity
[Spring Basic] DAO Repository DTO VO Entity
2022.07.09