2017-02-07 3 views
0

Spring Boot 기반 웹 애플리케이션에 인수가 있습니다. 커맨드 라인에서 @Scheduled cron 표현식을 오버라이드하려고 시도하지만, 스프링은 java.lang.IllegalStateException으로 응답합니다.스프링 부트 cmd 행 cron 표현식 java.lang.IllegalStateException

myapp.cron=0 0 1 * * * 

내가 받는다는와 응용 프로그램을 번들 해요 :

@Scheduled(cron="${myapp.cron}") 
public void work() { 
    ... 
} 

이 같은 application.properties 파일이 있습니다 :

Initialization of bean failed; 
nested exception is java.lang.IllegalStateException: 
Encountered invalid @Scheduled method 'work': 
Cron expression must consist of 6 fields (found 1 in "0") 

내가 예약 된 주석으로 봄의 구성 요소를 jar 파일. 응용 프로그램은 Java 8을 초기화 작업으로 사용하는 우분투 시스템에서 실행됩니다 (/etc/init/myapp.conf).

description "My app" 

start on runlevel [2345] 
stop on runlevel [!2345] 
respawn 
respawn limit 10 5 

setuid <USER> 
setgid <GROUP> 

script 
    java -Xms2G -Xmx2G -jar /opt/myapp.jar \ 
     --server.port=4014 \ 
     --server.address=127.0.0.1 
     --logging.file=/opt/myapp.log \ 
     --logging.level.root=INFO 
end script 

이 시점까지 모든 것이 좋습니다. 다음 줄을 추가하면 위의 예외가 발생합니다.

--myapp.cron=0 0 8 * * * 

아이디어가 있으십니까? 뭐가 문제 야?

건배, 카이

답변

0

카이,

당신은 봄 환경에서 그것을 얻기 위해 명령 줄 매개 변수로 0 0 8 * * * 전달하고 있습니다. 그러나 앱은 변수 값으로 첫 번째 0을 가져 오므로 필수 6 개 부분에 대한 예외는 예외입니다. 대신 따옴표로 값을 둘러 쌉니다.

--myapp.cron="0 0 8 * * *" 
+0

감사합니다. 대단히 감사합니다. – Kai