如何在庫項目中配置依賴項注入?
讓我用下面的例子來說明這個問題。如何在庫項目中配置依賴注入?
Maven的圖書館項目
ReservationAPI
com.example.reservation-API
該項目包含一個名爲ReservationApiClient一個方便的類,它使用一個RestTemplate(Spring框架)的進行HTTP調用。
是否有可能在此庫項目中創建RestTemplate字段@Autowired而不是自己實例化它?
Maven的可執行項目
org.company.application
這個項目是一個春天啓動應用程序和使用上述ReservationAPI作爲一個依賴。此應用程序將爲該庫中包含的便捷類ReservationApiClient創建一個@Bean,然後將執行其公共方法,然後執行HTTP請求。
上述場景的良好策略和/或最佳實踐是什麼?
我選擇了一個簡單的例子,只是爲了讓問題更容易閱讀,但RestTemplate確實有用於依賴注入的用例。在RestTemplate上設置屬性(如TimeOut等),然後將整個庫中的同一個對象作爲單例共享,這就是我喜歡使用Spring Framework的原因。但我想你是對的,它需要一個應用程序上下文,而不是不可執行的庫項目的情況。 –
你的第二個使用組件掃描的建議可以在這個簡單的例子中工作,但是如果該項目是開源的呢?這需要執行的應用程序使用Spring框架,這對於庫的用戶來說是一個很大的限制。 –
如果您使用的庫不包含Spring框架,那麼您應該在應用程序框架中聲明bean(如果它們很簡單)。否則,你可能會想創建工廠,因爲工廠應該能夠進行其他配置。我認爲這個Spring Boot功能用於自動配置http://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-developing-auto-configuration.html將是你正在尋找的配置事情的方式,你想要使用你的主應用程序的屬性。 –