[spring] Only one AsyncAnnotationBeanPostProcessor may exist within the context.
general java 2015. 9. 23. 21:50spring boot에서 @Async 어노테이션을 사용할 수 있다. 다만 application context에 task:annotation-driven을 두지 말아야 한다. 즉 아래와 같은 코드를 사용하면 에러가 발생한다.
<!--For @Async-->
<bean id="asyncExecuter" class="java.util.concurrent.Executors" factory-method="newFixedThreadPool">
<constructor-arg value="100" />
</bean>
<task:executor id="threadPoolTaskExecutor" pool-size="5-200" queue-capacity="1000"/>
<task:annotation-driven executor="asyncExecuter" />
spring boot 자체적으로 이미 Async 기능을 제공하기 때문이다.
xml 설정에도 포함해서 실행한다면, 아래와 같은 에러가 발생할 수 있다. xml 설정을 삭제한다면, 에러는 발생하지 않는다.
configuration problem: Only one AsyncAnnotationBeanPostProcessor may exist within the context.
참고자료