簡體   English   中英

如何在不使用xml或注釋的情況下使Spring識別bean?

[英]How can I make Spring identify beans without using xml or annotations?

我正在嘗試將Spring框架集成到包含數千個pojos的現有項目中。
編寫xml配置文件或遍歷每個文件並為類添加注釋將是一項艱巨的耗時任務,因此,有沒有一種方法可以使Spring掃描程序包並僅基於名稱約定來標識bean?

<context:component-scan>@Component -scanning行為只是默認設置。 您可以使用基於名稱的過濾器來自定義其行為。 有關示例,請參見手冊的3.10.3節

<beans>

   <context:component-scan base-package="org.example">
      <context:include-filter type="regex" expression=".*Stub.*Repository"/>
      <context:exclude-filter type="annotation"
                              expression="org.springframework.stereotype.Repository"/>
   </context:component-scan>

</beans>

因此,您可以通過類的命名約定使它檢測到您的bean。

第三個選項是使用@Configuration和@Bean批注以及使用基於Java的容器配置 但是隨后您正在編寫代碼以將依賴項連接在一起並創建您的bean。

您需要問自己的第一個問題是,是否真的有必要對所有這些豆進行接線? 在系統中的所有對象中,實際上只需要連接一小部分:那些是可配置的,並且依賴於其他連接的bean。

同意博佐。

有一個解決方法-您可以定義自己的自定義BeanFactoryPostProcessor ,在其中可以放置邏輯以根據命名約定在現有項目中的類之間進行掃描,並為現有項目中的類注冊BeanDefinitions。

是的,盡管這需要編碼,但並不是開箱即用的東西。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM