@ConditionalOnProperty 사용 여부 #
개요 : Job(Bean) 수가 많아짐에 따라, 초기 로딩 속도가 느려질 수 있음
현재 실행할 Job 만 Bean 으로 띄우기 위해 @ConditionalOnProperty
사용
= 필요한 Bean 만 등록 -> 초기 로딩 속도 빨라짐
= 단, @ConditionalOnProperty
사용 시 테스트 코드 실행 시 속도가 느려짐
@ConditionalOnProperty
사용 시 마다 (테스트)컨텍스트를 다시 띄움
결론
목적 | 사용 여부 |
---|---|
실제 동작에 우선순위가 있을 때 빠르게 Job 을 띄우고 실행할 때 | @ConditionalOnProperty 사용 O |
테스트 코드에 우선순위가 있을 때 (테스트 코드를 퉁해)코드의 정확성, 빠른 확인이 필요할 때 | @ConditionalOnProperty 사용 X |
@ConditionalOnProperty 사용하지 않을 경우,
모든 것을 Bean 으로 등록하는 것임.
(테스트 코드 작성 시) ApplicationContext 에서 Bean 찾아와서 코드 작성하는 방식
Step N개 vs 파이프라인 #
하나의 Job 에서 여러 Step 을 정의하여 사용함
- 순차적으로 실행이 필요할 때
- 몇몇 작업이 연관이 있을 때
문제점
- 유연성이 떨어짐
- Step1, 2, 3 이 있을 때, Step 2 혹은 3 만 실행하고 싶을 경우
- Step2 는 실행하고 싶지 않을 경우 등등
따라서, 파이프라인으로 구성하는 것도 좋은 방법 (권장)
파이프라인으로 구성 시 위의 경우 유연하게 대처 가능
우형에서는 보통 Job1 - Step1 개로 구성하고 파이프라인 방식으로 한다고 함
* 단, 파이프라인 활용 => 배포 툴에 조금 종속적인 것 같음
이 외 #
- JpaItemWriter : merge / persist
- Jenkins
- 배포 툴
- 무중단 배포 (readlink)
* 무중단 배포 관련해서 더 알아볼 것