2016-12-01 6 views
1

Quartz를 사용하는 타이머 애플리케이션을 만들고 있는데 spring을 사용하여 schema.sql 파일에서 내 DB를 초기화하고있다. 응용 프로그램이 시작되면 Scheduler Bean이 작성되기 전에 DB를 초기화해야합니다.빈 생성 전에 데이터베이스 초기화

@Bean 
public Scheduler scheduler() throws SchedulerException { 
    Scheduler scheduler; 
    final StdSchedulerFactory stdSchedulerFactory = new StdSchedulerFactory("application.properties"); 
    stdSchedulerFactory.initialize(); 
    scheduler = stdSchedulerFactory.getScheduler(); 
    scheduler.start(); 
    return scheduler; 
} 

스케줄러 빈은

@SpringBootApplication
@Import ({TimerConfiguration.class})
공용 클래스 TimerApplication {

처럼 TimerApplication에 추가됩니다 TimerConfiguration.java 안에

이것을 달성 할 방법이 있습니까?

+1

'@ PostConstruct'도'@ DependsOn'도 도움이 될 것 같아요. – Patrick

답변

2

@DependsOn annotation은 다른 bean이 초기화 된 후에 초기화되어야하는 bean을 지정합니다.

대기중인 bean의 이름을 주석의 값으로 설정하는 것이 좋습니다.

귀하의 경우에는 @DependsOn("datasource")입니다. 워드 프로세서에서

더 많은 정보를 정기적으로 : 현재 빈이 의존하는

콩. 지정된 bean은 이며이 bean 이전에 컨테이너에 의해 작성되도록 보장됩니다. 빈이 명시 적으로 속성 또는 생성자 인수를 통해 의존하지 않는 경우에 을 사용하는 경우는 드물지만 은 다른 bean의 초기화의 부작용에 따라 달라집니다.

Bean으로 주석 된 메소드에 대해 Component 또는 으로 직접 또는 간접적으로 주석이 지정된 클래스에서 사용할 수 있습니다.