참고자료.
http://static.springsource.org/spring/docs/3.0.5.RELEASE/reference/scheduling.html

 

 

beans-task.xml 생성. executer 정의

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
    xmlns:p="http://www.springframework.org/schema/p"
    xmlns:security="http://www.springframework.org/schema/security"
    xmlns:aop="http://www.springframework.org/schema/aop"
    xmlns:mvc="http://www.springframework.org/schema/mvc"
    xmlns:task="http://www.springframework.org/schema/task"
    xsi:schemaLocation="
            http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
            http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd
            http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security-3.0.xsd
            http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
             http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd
            http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-3.0.xsd">
           
    <bean id="myexecuter" class="java.util.concurrent.Executors" factory-method="newFixedThreadPool">
        <constructor-arg value="100" />
    </bean>

    <task:executor id="threadPoolTaskExecutor" pool-size="100" queue-capacity="500"/>

    <task:annotation-driven executor="myexecuter" />
   
</beans>

 

 

 

beans.xml 에 추가 . ( 위치 중요)

    <import resource="classpath:/beans-task.xml" />

 

 

 

@Async 할 클래스 추가 (기존 Bean이 아닌 새로운 Bean으로 정의하니 동작함.)

import java.util.ArrayList;
import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;

 

@Service
public class AsyncProcessService {
      @Async
    public void processNotifications(List list) {

       // 작업
    }

}

 

 

 

Controller에 추가.

@Controller
public class EventController {

 

     @AutoWired

     AsyncProcessService asyncService;

 

    @RequestMapping(value = "/event", method = {RequestMethod.POST, RequestMethod.GET})
    @ResponseBody()
     public void test() {

         asyncService.processNotifications(newSendEventList);
         return Response.OK();

     }

}

Posted by '김용환'
,