웹 강의 기초 2일차

오정빈·2025년 9월 2일

내일배움캠프

목록 보기
2/22

2025 09 02 스파르타 코딩클럽 2일차

JavaScript, Form과 서버 연결, Rest API, AJAX등

다양하게 배웠지만 가장 중요한 내용은 비동기처리 내용 같은데

자바에서는 어떻게 처리하는 지 궁금해서 찾아보았다.

1.동기/비동기

  • 동기
    • 함수를 실행하고 함수가 끝날 때까지 기다려서 응답을 받은 후 다음 과정을 진행
      -함수를 통해 얻은 리턴값을 다음에 사용해야 한다면 반드시 동기식으로 처리를 해야한다.
  • 비동기
    • 함수를 실행하고 바로 다음 과정으로 진행 (결과를 기다리지 않는다)
    • 함수의 리턴 값이 다음에 필요 없을 때 사용한다.
    • 중요한 것은 비동기 처리 된 함수의 결과 값을 callback함수를 통해 받아야한다.

2. 자바에서 비동기 처리 하는 방법

먼저 자바에서 비동기 처리 방법을 알기 전에 알아야 하는 용어가 있다.

  • 쓰레드
    • 스프링 프레임워크 기반의 애플리케이션이 여러 요청을 동시에 처리하기 위해 사용하는 프로세스 내의 작은 실행 단위
  • 스프링 쓰레드풀
    • 여러 요청을 동시에 처리해야 할 때 매번 새로운 쓰레드를 생성하고 삭제하는 오버헤드를 줄이기 위해 미리 생성된 여러 쓰레드를 모아 둔 그룹
    • 스프링 컨테이너에 의해 관리되는 재사용 가능한 소프트웨어 컴포넌트
    • 객체가 의존관계를 등록할 때 스프링 컨테이너에서 해당하는 빈을 찾고 그 빈과 의존성을 만들기 때문에 사용한다.
  • 어노테이션
    • 코드 사이에 주석처럼 쓰이며 특별한 의미, 기능을 수행하도록 하는 기술이다.
    • 프로그램에게 추가적인 정보를 제공해주는 메타데이터라고 볼 수 있다. (메타데이터 : 데이터를 위한 데이터)

  • @Configuration
    • 스프링 설정 클래스임을 나타냄 (Bean 등록용)
  • @EnableAsync
    • @Async 어노테이션을 사용 가능하게 활성화
  • @Bean
    • Spring이 관리하는 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어노테이션이 알아서 처리를 해준다고 한다.

아직 어노테이션과 빈 등 정확하게 이해를 하지 못했지만, 언젠가는 모두 이해하는 날이 올 것이라 믿는다.

0개의 댓글