我創建了一個調度程序類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();}現在在控制器中,我已經創建了“stopScheduler”方法來停止那些調度程序,在這個控制器中我已經自動裝配了 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"; } } 現在的問題是,如果條件屬性為 false 那么我會得到以下異常 Field testSchedulderNew in com.sbill.app.web.rest.TestCont required a bean of type 'com.sbill.app.schedulerJob.TestSchedulderNew如果是真的,一切正常,我們有什么辦法可以解決這個問題嗎?
1 回答

動漫人物
TA貢獻1815條經驗 獲得超10個贊
您可以使用@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";
}
添加回答
舉報
0/150
提交
取消