5 回答

TA貢獻1900條經驗 獲得超5個贊
這個鏈接在這里解釋了在注釋的情況下的組件掃描。在您的情況下,您已通過 XML 配置了組件掃描。spring 中的每個 XML 定義都有其對應的注解定義。盡管此鏈接解釋了通過注釋配置組件掃描的情況,但它在您的情況下也完全有效:

TA貢獻1807條經驗 獲得超9個贊
如果 spring 容器知道 bean 位于不同的包中,則這些 bean 位于不同的包中這一事實并不重要。通過在兩個包中啟用組件掃描,您可以在應用程序的當前執行上下文中全局使用這兩個包中的所有 bean。
您可以將 spring IoC 視為全局映射,給定一個(先前注冊的)鍵,它可以為您提供與該鍵相關的實例。

TA貢獻1831條經驗 獲得超10個贊
當您提到組件掃描包時,它表示spring-container 在這些包中找到帶注釋的類,然后bean(具有@Component 或相關注釋的類的對象,如@Service、@Controller、@Repository)將是由 Spring 管理(從創建到銷毀的整個生命周期)。因此,在您的應用程序中,無論何時您需要一個這樣的 bean,而不是創建,它將由容器提供。另一方面,如果您沒有指定“組件掃描”,您將必須確定您希望 Spring-container 管理其 bean 的類(使用 xml 或 javaConfig)?,F在這部分是確定哪些 bean 將由 Spring-container 管理。
接下來是在需要的地方連接這些 bean。為此,您在 setter 方法中提到了 @Autowired。當 Spring-container 遇到這個注解時,它會在容器中尋找那個 bean(在你的例子中是服務 bean)。由于該 bean 由容器管理(來自上一步)并且在需要時可用(在您的情況下在控制器類中),容器將提供(自動連接)服務 bean 到 setter 方法中。
添加回答
舉報