spring에는 cron 표현식을 사용하지만, 너무 똑같은 시간(0초)에 동작되지 않게 할 수 있다.
spring 3.x에는 어노테이션에서 spel을 지원하지 않아 XML로 설정해야 한다.
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
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/task http://www.springframework.org/schema/task/spring-task.xsd">
<task:executor id="googleExecutor" pool-size="5-30" queue-capacity="10000"/>
<task:annotation-driven scheduler="googleScheduler" executor="googleExecutor"/>
<task:scheduler id="googleScheduler" pool-size="30"/>
<task:scheduled-tasks scheduler="googleScheduler">
<task:scheduled ref="googleFeedService" method="reloadCache" fixed-delay="#{new Double(T(java.lang.Math).random()*3000).intValue() + 600000}"/>
</task:scheduled-tasks>
</beans>
반면, spring 4.3에서 어노테이션을 사용하면 다음과 같이 쉽게 사용할 수 있다.
@Scheduled(fixedRate = 600000, initialDelayString = #{ T(java.lang.Math).random() * 3000} )
'general java' 카테고리의 다른 글
[spring] @Scheduled-fixedDelayString 예시와 annot parse into integer 문제 해결 (0) | 2017.03.11 |
---|---|
[java] byte[] 쉽게 만들기 (0) | 2017.03.03 |
logback 설정의 encoder (0) | 2017.02.09 |
nitialize Unable to obtain CGLib fast class and/or method implementation 해결하기 (0) | 2017.01.14 |
ObjectMapper, UnrecognizedPropertyException, JsonInclude 예시 (0) | 2016.12.17 |