본문 바로가기

IT/개발

Spring Thread(스프링 쓰레드처리)

스프링에서 비동기로 작업을 하기위한 개발
예를들어 엑셀의 Row를 DB에 Insert하는과정에서
건수가 너무 많은경우 모든 데이터가 입력되기까지 사용자는 기다려야합니다.

하지만 그런 오류를 개선하고자 
엑셀의 Row를 DB에 Insert하는과정은 또 하나의 Thread를 생성해서
작업하도록 할 수 있습니다.

먼저 Spring 설정파일에서 bean을 생성합니다.

1
2
3
4
5
6
7
  <bean id="workExecutor" class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor">
      <property name="corePoolSize" value="10" />
    <property name="maxPoolSize" value="20" />
    <property name="queueCapacity" value="10" />
    <property name="waitForTasksToCompleteOnShutdown" value="true" />
  </bean>
  
cs

 

실제 사용될 class에서 
Spring에서 제공하는 해당 Class를 선언하고 실행합니다.

1
2
3
4
5
@Resource(name = "workExecutor")
private ThreadPoolTaskExecutor workExecutor;
 
ExcelUploadThread thread = new ExcelUploadThread();
workExecutor.execute(thread);
cs

 

Thread에서 작업될 로직을 구현합니다.

1
2
3
4
5
6
7
8
    public class ExcelUploadThread implements Runnable {
        
        //가장중요한건 Runnable을 implements했으니 run함수를 override하여 실제 로직을 구현합니다.
        public void run(){
            //TO-DO
        }
    }
 
cs

정리하자면 Thread를 이용하기위해선 먼저 Bean을 생성하고(어노테이션방법도 있습니다.)
그 생성된 Bean을 사용할 class에서 DI(의존성주입)해줍니다.
그리고 실제 비동기로 작업할 class를 호출함으로써 비동기 작업은 진행됩니다.

감사합니다.

'IT > 개발' 카테고리의 다른 글

Java 파일 읽기, 파일 쓰기  (0) 2019.10.08
Spring Transactional annotation  (0) 2019.09.27
Oracle LISTAGG  (0) 2019.09.12
JAVA CSV파일 엑셀에서 열때 숫자를 문자로 인식  (0) 2019.09.09
JSP JSTL fmt 기능  (0) 2019.09.08