我創(chuàng)建了一個(gè)調(diào)度程序類public class TestSchedulderNew {@Scheduled(fixedDelay = 3000)public void fixedRateJob1() {System.out.println("Job 1 running");}@Scheduled(fixedDelay = 3000)public void fixedRateJob2() {System.out.println("Job 2 running");}}在配置中,我放置了 @ConditionalOnProperty 注釋以在有條件的情況下啟用它。 @Bean@ConditionalOnProperty(value = "jobs.enabled")public TestSchedulderNew testSchedulderNew() {return new TestSchedulderNew();}現(xiàn)在在控制器中,我已經(jīng)創(chuàng)建了“stopScheduler”方法來停止那些調(diào)度程序,在這個(gè)控制器中我已經(jīng)自動(dòng)裝配了 TestSchedulderNew 類 @RestController @RequestMapping("/api") public class TestCont {private static final String SCHEDULED_TASKS = "testSchedulderNew"; @Autowired private ScheduledAnnotationBeanPostProcessor postProcessor; /] @Autowired private TestSchedulderNew testSchedulderNew; @GetMapping(value = "/stopScheduler") public String stopSchedule(){ postProcessor.postProcessBeforeDestruction(testSchedulderNew, SCHEDULED_TASKS); return "OK"; } } 現(xiàn)在的問題是,如果條件屬性為 false 那么我會(huì)得到以下異常 Field testSchedulderNew in com.sbill.app.web.rest.TestCont required a bean of type 'com.sbill.app.schedulerJob.TestSchedulderNew如果是真的,一切正常,我們有什么辦法可以解決這個(gè)問題嗎?
1 回答

動(dòng)漫人物
TA貢獻(xiàn)1815條經(jīng)驗(yàn) 獲得超10個(gè)贊
您可以使用@Autowired(required=false)null 簽入stopScheduler方法。
@Autowired(required=false)
private TestSchedulderNew testSchedulderNew;
@GetMapping(value = "/stopScheduler")
public String stopSchedule() {
if (testSchedulderNew != null) {
postProcessor.postProcessBeforeDestruction(testSchedulderNew,
SCHEDULED_TASKS);
return "OK";
}
return "NOT_OK";
}
添加回答
舉報(bào)
0/150
提交
取消