2025 09 02 스파르타 코딩클럽 2일차
JavaScript, Form과 서버 연결, Rest API, AJAX등
다양하게 배웠지만 가장 중요한 내용은 비동기처리 내용 같은데
자바에서는 어떻게 처리하는 지 궁금해서 찾아보았다.
1.동기/비동기
- 동기
- 함수를 실행하고 함수가 끝날 때까지 기다려서 응답을 받은 후 다음 과정을 진행
-함수를 통해 얻은 리턴값을 다음에 사용해야 한다면 반드시 동기식으로 처리를 해야한다.
- 비동기
- 함수를 실행하고 바로 다음 과정으로 진행 (결과를 기다리지 않는다)
- 함수의 리턴 값이 다음에 필요 없을 때 사용한다.
- 중요한 것은 비동기 처리 된 함수의 결과 값을 callback함수를 통해 받아야한다.
2. 자바에서 비동기 처리 하는 방법
먼저 자바에서 비동기 처리 방법을 알기 전에 알아야 하는 용어가 있다.
- 쓰레드
- 스프링 프레임워크 기반의 애플리케이션이 여러 요청을 동시에 처리하기 위해 사용하는 프로세스 내의 작은 실행 단위
- 스프링 쓰레드풀
- 여러 요청을 동시에 처리해야 할 때 매번 새로운 쓰레드를 생성하고 삭제하는 오버헤드를 줄이기 위해 미리 생성된 여러 쓰레드를 모아 둔 그룹
- 빈
- 스프링 컨테이너에 의해 관리되는 재사용 가능한 소프트웨어 컴포넌트
- 객체가 의존관계를 등록할 때 스프링 컨테이너에서 해당하는 빈을 찾고 그 빈과 의존성을 만들기 때문에 사용한다.
- 어노테이션
- 코드 사이에 주석처럼 쓰이며 특별한 의미, 기능을 수행하도록 하는 기술이다.
- 프로그램에게 추가적인 정보를 제공해주는 메타데이터라고 볼 수 있다. (메타데이터 : 데이터를 위한 데이터)

- @Configuration
- 스프링 설정 클래스임을 나타냄 (Bean 등록용)
- @EnableAsync
- @Async 어노테이션을 사용 가능하게 활성화
- @Bean
- (destroyMethod = "shutdown")
- 메인 method 종료시 같이 종료되게 해주는 역할
- corePoolSize/maxPoolSize
- threadNamePrefix("TP-")
- 쓰레드 별명 (TP-1, TP-2 , ... , TP-10)
- executor.initialize()
- return executor
- 스프링 IoC 컨테이너에 등록(Bean의 역할)
이렇게만 한다고 바로 사용하는 것이 아닌 이것은 Async 선언까지 한 것이다.

Service 패키지에 새로운 파일을 생성하고 사용하면 된다.
- @Service
- 어노테이션 중 하나 Service의 위치를 알려준다.
- @Async("asyncExcutor")
- Async(어노테이션)를 붙이면 쓰레드 풀에서 비동기 처리를 해준다.
- "asyncExcutor"는 위에서 선언한 메소드 이름이다.
- MyService Method
- 메소드 안의 내용이 호출 즉시 별도의 쓰레드에서 실행됨
비동기 처리 시 콜백함수를 선언해야 하나, 스프링에서는 Async어노테이션이 알아서 처리를 해준다고 한다.
아직 어노테이션과 빈 등 정확하게 이해를 하지 못했지만, 언젠가는 모두 이해하는 날이 올 것이라 믿는다.