一文掌握Spring?中?@Component?和?@Bean?區(qū)別(最新推薦)
Spring
中 @Component
和 @Bean
區(qū)別
1. 用途不同
?@Component
用于標(biāo)識(shí)一個(gè)普通的類,@Bean
用于配置類里面,在方法上面聲明和配置 Bean
對(duì)象
Tips
:
@Component
會(huì)告訴Spring
,由@Component
所修飾的類會(huì)被作為組件類,同時(shí)Spring
要為這個(gè)類創(chuàng)建Bean
- 告知
spring
這個(gè)方法會(huì)返回一個(gè)對(duì)象,這個(gè)對(duì)象需要注冊(cè)為Spring
上下文(ApplicationContext
)中的bean
,通常方法體包含了最終產(chǎn)生bean
實(shí)例的邏輯
2.使用方式不同
? @Component
是類級(jí)別的注解,Spring
可以掃描到配置此注解的這些類并把他們注入到 SpringIOC
容器中,@Bean
是修飾在方法上的,表示此方法返回一個(gè) Bean
對(duì)象注入到 SpringIOC
容器中。
Tips
:但是都能夠在Spring
中注冊(cè)Bean
對(duì)象
@Component
使用示例
@Component public class OrderService { }
但是在spring
中通常@Component
注解通常要配合@ComponentScan
實(shí)現(xiàn)注冊(cè)的功能
@ComponentScan("指定@Component注解所在的包路徑") public class AppConfig { }
@Bean
使用示例
@Configuration public class AppConfig { @Bean public OrderService orderService1(){ return new OrderService(); } }
@Bean
需要在配置類中使用,即類上需要加上@Configuration
注解,然后在配置類中使用一個(gè)方法定義bean
是如何創(chuàng)建的
3. 控制權(quán)不同
? @Component
修飾的類是由Spring框架
統(tǒng)一管理和創(chuàng)建的,而 @Bean
允許開(kāi)發(fā)人員手動(dòng)控制 Bean
的創(chuàng)建和配置
4. 靈活性不同
@Bean
注解比@Component
注解靈活,我們可以按需注冊(cè)需要的bean
,很多場(chǎng)景我們只能通過(guò)@Bean
來(lái)注冊(cè)bean
,比如引入第三方庫(kù)中的類需要裝配到spring
容器中。
參考文獻(xiàn)
Spring中@Component注解和@Bean的區(qū)別是什么
Spring中@Component和@Bean的區(qū)別_spring bean和component
到此這篇關(guān)于Spring 中 @Component 和 @Bean 區(qū)別的文章就介紹到這了,更多相關(guān)Spring @Component 和 @Bean 區(qū)別內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
SpringBoot實(shí)現(xiàn)前端驗(yàn)證碼圖片生成和校驗(yàn)
這篇文章主要為大家詳細(xì)介紹了SpringBoot實(shí)現(xiàn)前端驗(yàn)證碼圖片生成和校驗(yàn),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-02-02利用JSONObject.toJSONString()包含或排除指定的屬性
這篇文章主要介紹了利用JSONObject.toJSONString()包含或排除指定的屬性,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-03-03java實(shí)現(xiàn)視頻轉(zhuǎn)碼工具類
這篇文章主要介紹了java實(shí)現(xiàn)視頻轉(zhuǎn)碼,涉及到工具類用到的參數(shù),本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下2022-01-01解決啟用 Spring-Cloud-OpenFeign 配置可刷新項(xiàng)目無(wú)法啟動(dòng)的問(wèn)題
這篇文章主要介紹了解決啟用 Spring-Cloud-OpenFeign 配置可刷新項(xiàng)目無(wú)法啟動(dòng)的問(wèn)題,本文重點(diǎn)給大家介紹Spring-Cloud-OpenFeign的原理及問(wèn)題解決方法,需要的朋友可以參考下2021-10-10Struts 2 實(shí)現(xiàn)Action的幾種方式
本篇文章主要介紹了Struts 2 實(shí)現(xiàn)Action的幾種方式,Struts 2框架下實(shí)現(xiàn)Action類有三種方式,有興趣的可以了解一下2017-10-10Java中的CountDownLatch、CyclicBarrier和semaphore實(shí)現(xiàn)原理解讀
這篇文章主要介紹了Java中的CountDownLatch、CyclicBarrier和semaphore實(shí)現(xiàn)原理詳解,CountDownLatch中調(diào)用await方法線程需要等待所有調(diào)用countDown方法的線程執(zhí)行,這就很適合一個(gè)業(yè)務(wù)需要一些準(zhǔn)備條件,等準(zhǔn)備條件準(zhǔn)備好之后再繼續(xù)執(zhí)行,需要的朋友可以參考下2023-12-12Java內(nèi)存之happens-before和重排序
在JMM(Java內(nèi)存模型)中,如果一個(gè)操作執(zhí)行的結(jié)果需要對(duì)另一個(gè)操作可見(jiàn),那么這兩個(gè)操作之間必須存在happens-before關(guān)系。下面小編來(lái)簡(jiǎn)單介紹一下2019-05-05