@Bean和@Component之間的區別?
@Bean和@Component都是將Spring Bean新增到Spring Context中。結果是一樣的。有什麼不同?
@Bean
@Bean與配置類(使用@Configuration)一起工作,因此使用在基於配置中。也可用在配置類的方法中。告訴Spring將方法返回的任何內容新增到Spring Context中。
預設情況下,它將使用方法的名稱作為bean的id / name(類似XML配置:bean id=xxxx)。另一種方法是,您可以在@Bean註釋中指定它。
我們明確宣告瞭bean。
@Component
@Component用於我們的類,它只有在我們的SpringBoot應用程式啟用了元件掃描並且包含了我們的類時才有效。
透過元件掃描,Spring將掃描整個類路徑,並將所有@Component註釋類新增到Spring Context(具有可調整的Filtering)。
我們讓Spring發現了bean
區別
兩個註釋的結果是相同的,bean都會被新增到Spring上下文中。但是,有一些問題需要注意。
假設我們有一個需要在多個應用程式中共享的模組,這個模組包含了一些服務,但並非所有應用都需要這些服務。
如果在這些服務類上使用@Component並在應用程式中使用元件掃描,我們最終可能會檢測到超過必要的bean數量,不不需要的Bean也掃描載入了。這時候必須調整元件掃描的過濾或提供即使未使用的bean也可以執行的配置,否則,Spring應用程式上下文將無法啟動。
在這種情況下,最好使用@Bean註釋並僅例項化那些在每個應用程式中單獨需要的bean。
相關文章
- @Component和@Bean的區別Bean
- @bean和@component的理解Bean
- Spring中@Component和@Configuration的區別Spring
- querySelector和getElementById之間的區別
- 敏捷和 Scrum 之間的區別敏捷Scrum
- React.createClass和extends Component的區別React
- MVC,MVP和MVVM之間的區別MVCMVPMVVM
- return,continue和break之間的區別
- @Component, @Repository, @Service的區別
- tali -f 和 tail -F 之間的區別AI
- Linux和windows系統之間的區別LinuxWindows
- 淺談querySelector和getElementById之間的區別
- 【轉】理解 CI 和 CD 之間的區別
- 公共雲和私有云之間的區別
- Vue中computed、methods和watch之間的區別Vue
- CI和CD之間的真正區別 -Fire CI
- Kata和Kaizen之間的區別是什麼?AI
- React之元件(component)之間的通訊React元件
- spring、springmvc、springboot、springcloud 之間的聯絡和區別SpringMVCSpring BootGCCloud
- nodejs和js之間有什麼區別?NodeJS
- SpringBoot的repackage和Maven打包命令之間的區別 - BaeldungSpring BootPackageMaven
- Oracle與OpenJDK之間的區別OracleJDK
- GCD與NSOperation之間的區別GC
- select、poll、epoll之間的區別
- Java(3)-POJO和Java bean的區別是什麼JavaPOJOBean
- 尋源和採購之間的區別是什麼?
- ASP.NET Core中GetService()和GetRequiredService()之間的區別ASP.NETUI
- .gitkeep是什麼? .gitignore和.gitkeep之間的區別(譯)Git
- [譯] 使用 leanback 的 DiffCallback: 和 DiffUtil 回撥之間的區別
- Linux 上的 AppImage、Snap、Flatpak 之間的區別和聯絡LinuxAPP
- HTTP 和 HTTPS 之間除了安全性區別外,還有哪些區別HTTP
- CST和GMT時間的區別
- 27、EJB與JAVA BEAN的區別?JavaBean
- hadoop發行版本之間的區別Hadoop
- JavaSE、JavaEE、JavaME之間的區別概述Java
- HTTPS、SSL、TLS三者之間的聯絡和區別HTTPTLS
- BI、資料倉儲和資料分析之間的區別
- 在Linux中,BASH 和 DOS之間的區別是什麼?Linux