[SPRING] @Scheduled (fixedDelay)를 Spring 3.0 표현 언어로 매개 변수화하는 방법은 무엇입니까?
SPRING@Scheduled (fixedDelay)를 Spring 3.0 표현 언어로 매개 변수화하는 방법은 무엇입니까?
예약 된 작업에 주석을 달기 위해 Spring 3.0 기능을 사용하는 경우, 현재의 것처럼 내 작업 클래스에 하드 와이어로 연결하는 대신 fixedDelay를 구성 파일의 매개 변수로 설정하고 싶습니다 ...
@Scheduled(fixedDelay = 5000)
public void readLog() {
...
}
불행하게도 스프링 표현 언어 (SpEL)의 수단을 사용하면 @Value가 String 객체를 반환하고 차례로 fixedDelay 매개 변수에서 요구하는대로 긴 값으로 자동 박스 될 수없는 것으로 보입니다.
해결법
-
==============================
1.@Scheduled 주석은 의문의 여지가 있습니다. 그래서 당신을위한 해결책은 task-scheduled XML 설정을 사용하는 것입니다. 이 예제를 살펴 보자 (Spring doc에서 복사) :
@Scheduled 주석은 의문의 여지가 있습니다. 그래서 당신을위한 해결책은 task-scheduled XML 설정을 사용하는 것입니다. 이 예제를 살펴 보자 (Spring doc에서 복사) :
<task:scheduled-tasks scheduler="myScheduler"> <task:scheduled ref="someObject" method="readLog" fixed-rate="#{YourConfigurationBean.stringValue}"/> </task:scheduled-tasks>
... 또는 String에서 Long으로 캐스트가 작동하지 않으면 다음과 같이됩니다.
<task:scheduled-tasks scheduler="myScheduler"> <task:scheduled ref="someObject" method="readLog" fixed-rate="#{T(java.lang.Long).valueOf(YourConfigurationBean.stringValue)}"/> </task:scheduled-tasks>
다시 말하지만, 이러한 설정을 시도하지는 않았지만 조금 도움이 되었기를 바랍니다.
-
==============================
2.Spring v3.2.2는 이것을 처리하기 위해 String 매개 변수를 원래의 3 개의 긴 매개 변수에 추가했습니다. fixedDelayString, fixedRateString 및 initialDelayString을 사용할 수 있습니다.
Spring v3.2.2는 이것을 처리하기 위해 String 매개 변수를 원래의 3 개의 긴 매개 변수에 추가했습니다. fixedDelayString, fixedRateString 및 initialDelayString을 사용할 수 있습니다.
@Scheduled(fixedDelayString = "${my.fixed.delay.prop}") public void readLog() { ... }
-
==============================
3.@Scheduled 주석을 사용할 수 있지만 cron 매개 변수와 함께 사용하면됩니다.
@Scheduled 주석을 사용할 수 있지만 cron 매개 변수와 함께 사용하면됩니다.
@Scheduled(cron = "${yourConfiguration.cronExpression}")
5 초 간격은 "* / 5 * * * * *"로 표현할 수 있습니다. 그러나 1 초 미만의 정확도를 제공 할 수는 없습니다.
-
==============================
4.콩을 정의하여 값을 직접 변환 할 수 있다고 생각합니다. 나는 그것을 시도하지 않았지만 다음과 비슷한 접근법이 유용 할 것이라고 생각한다.
콩을 정의하여 값을 직접 변환 할 수 있다고 생각합니다. 나는 그것을 시도하지 않았지만 다음과 비슷한 접근법이 유용 할 것이라고 생각한다.
<bean id="FixedDelayLongValue" class="java.lang.Long" factory-method="valueOf"> <constructor-arg value="#{YourConfigurationBean.stringValue}"/> </bean>
어디에:
<bean id="YourConfigurationBean" class="..."> <property name="stringValue" value="5000"/> </bean>
from https://stackoverflow.com/questions/2598712/how-to-parameterize-scheduledfixeddelay-with-spring-3-0-expression-language by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] Spring과 Jackson 전체 데이터 바인딩을 사용하는 REST (0) | 2018.12.13 |
---|---|
[SPRING] Spring은 bean xml 설정 파일이 존재할 때 찾을 수 없다. (0) | 2018.12.13 |
[SPRING] 이름이 [duplicate] 인 DispatcherServlet의 URI가있는 HTTP 요청에 대한 매핑이 없습니다 (0) | 2018.12.13 |
[SPRING] JUnit 테스트는 Eclipse에서는 성공하지만 Maven Surefire에서는 실패합니다. (0) | 2018.12.13 |
[SPRING] 이 RESTful 애플리케이션 예제에서 Spring @ResponseBody 어노테이션은 어떻게 작동합니까? (0) | 2018.12.13 |