2017-01-16 40 views
1

在初始化Spring時是否可以調用某種方法 - 在數據庫連接啓動之後,但在@RestController端點啓動(可用於發送請求)之前?啓動端點之前的彈簧運行方法

在REST端點準備就緒之前,我需要發送一些數據庫請求(使用JpaRepository)。

我試圖找到類似的帖子,但我無法。我發現註釋@PostConstruct或接口CommandLineRunnerApplicationListener<ContextRefreshedEvent>,但我認爲所有的都在端點啓動後調用?或者我錯了?

+0

請解釋一下你需要解決什麼問題(你需要做什麼) –

回答

1

@PostConstruct在bean完全構建之後但在「投入使用」之前調用 - 在控制器的情況下,它意味着在它開始提供請求之前。 (在服務bean的情況下,這意味着在它連接到任何其他bean之前)。

請注意,最好使用構造函數注入來爲bean提供依賴關係,但它可能仍然是明智的做數據庫在@PostConstruct中查詢以避免實際構造函數中的繁重操作。

+0

好的謝謝,所以據我的理解,我可以在用@ @PostConstruct註釋的方法中使用\ @Autowired字段? – user3626048

+1

是的,但最好儘可能避免使用自動裝配字段,因爲它隱藏了依賴關係,難以進行測試,並可能導致模糊的錯誤。如果可行的話,最好自動裝配構造函數。 – chrylis