대게 서비스 개발 완료 후 상용 장비에 배포할 때 한 대에 하는 것이 아닌 여러 대의 장비에 배포한다.
헌데, @Scheduled 애노테이션의 cron 표현식을 자바 코드 안에 넣게 되면 같은 시간에 여러 대의 장비에서 배치가 구동 될 것이기 때문에 문제가 발생한다.
그래서 프로퍼티로 크론 표현식을 분리했다.
다음은 SpEL 설정 부분인데 @Scheduled(cron = "#{appConfig['cron.time']}) 와 같이 하면 SpEL에서 값을 가져오지 못하고 오류가 발생한다.
<util:properties id="baseConfig" location="classpath:conf/base-config.xml" />
<util:properties id="appConfig" location="classpath:conf/${spring.profiles.active}-config.xml" />
오류가 발생되는 이유는?
SpEL로는 설정 분리가 안 되는 것인가?
잘 모르겠다. ㅠㅠ (알고 계신분이 계시다면 comment 부탁 드립니다.)
여하튼 다음과 같은 표현식을 통해서만 크론 표현식을 프로퍼티로 분리할 수 있다.
<util:properties id="baseConfig" location="classpath:conf/base-config.xml" />
<util:properties id="appConfig" location="classpath:conf/${spring.profiles.active}-config.xml" />
<context:property-placeholder properties-ref="appConfig" /> <- 추가
@Scheduled(cron = "${cron.time}")
'프로그래밍' 카테고리의 다른 글
개방 폐쇄 원칙 OCP (Open-Closed Principle) (2) | 2013.02.26 |
---|---|
singleton VS prototype 객체 성능 비교 (0) | 2013.02.21 |
리눅스에서 java main 실행 (0) | 2013.02.14 |
ajax HTTP, HTTPS에 따른 크로스 도메인 문제 (2) | 2013.02.05 |
공통 상수를 인터페이스에 정의하는 이유는 뭘까? (3) | 2013.01.29 |
spring SpEL 설정 삽질 이야기 (415) | 2013.01.11 |
자바의 제너릭이 생기게 된 이유? (398) | 2012.12.27 |
스프링 xml 설정 파일 용어 (446) | 2012.12.26 |