Spring注解中@Autowired和@Bean的區(qū)別詳解
先了解下這兩個(gè)注解各自的使用場(chǎng)景,咱就知道兩者的區(qū)別了。
1,@Autowired
@Autowired 注釋?zhuān)梢詫?duì)類(lèi)成員變量、方法及構(gòu)造函數(shù)進(jìn)行標(biāo)注,完成自動(dòng)裝配的工作。 通過(guò) @Autowired的使用來(lái)消除 set ,get方法。在此之前,我們對(duì)bean配置屬性時(shí),是這么用的
<property name="屬性名" value=" 屬性值"/>
通過(guò)這種方式來(lái),配置比較繁瑣,而且代碼比較多。在Spring 2.5 引入了 @Autowired 注釋
使用@Autowired的原理:
其實(shí)在啟動(dòng)spring IOC時(shí),容器自動(dòng)裝載了一個(gè)AutowiredAnnotationBeanPostProcessor后置處理器,當(dāng)容器掃描到@Autowied、@Resource(是CommonAnnotationBeanPostProcessor后置處理器處理的)或@Inject時(shí),就會(huì)在IoC容器自動(dòng)查找需要的bean,并裝配給該對(duì)象的屬性
2,@Bean
@Bean是一個(gè)方法級(jí)別上的注解,主要用在@Configuration注解的類(lèi)里,也可以用在@Component注解(@Controller,@Service,@Repository)的類(lèi)里。添加的bean的id為方法名@Bean注解是Spring從3.0版本開(kāi)始引入的
spring的@Bean注解用于告訴方法,產(chǎn)生一個(gè)Bean對(duì)象,然后這個(gè)Bean對(duì)象交給Spring管理。產(chǎn)生這個(gè)Bean對(duì)象的方法Spring只會(huì)調(diào)用一次,隨后這個(gè)Spring將會(huì)將這個(gè)Bean對(duì)象放在自己的IOC容器中。
實(shí)例:
@Configuration public class AppConfig { @Bean public UserService userService() { return new UserServiceImpl(); } }
等同于以下XML配置:
<beans> <bean id="userService" class="com.acme.UserServiceImpl"/> </beans>
兩者區(qū)別:
@Autowired 可修飾變量和方法,用于完成自動(dòng)裝配(將需要的外部資源注入),自動(dòng)裝配的前提你要先有才能裝配(該資源需要存在于IOC容器中),直接引用資源就行。
@Bean 修飾的方法表示初始化一個(gè)對(duì)象并交由Spring IOC去管理,@Bean 只能和@Component @Repository @Controller @Service @Configration 配合使用。
到此這篇關(guān)于Spring注解中@Autowired和@Bean的區(qū)別詳解的文章就介紹到這了,更多相關(guān)@Autowired和@Bean的區(qū)別內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
詳解如何使用SpringBoot實(shí)現(xiàn)下載JSON文件
在?Spring?Boot?中實(shí)現(xiàn)文件下載功能,可以通過(guò)將?JSON?字符串作為文件內(nèi)容返回給客戶端從而實(shí)現(xiàn)JSON文件下載效果,下面我們就來(lái)看看具體操作吧2025-02-02使用Spring自定義實(shí)現(xiàn)IOC和依賴(lài)注入(注解方式)
這篇文章主要介紹了使用Spring自定義實(shí)現(xiàn)IOC和依賴(lài)注入(注解方式),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-08-08SpringBoot自動(dòng)配置特點(diǎn)與原理詳細(xì)分析
這篇文章主要介紹了SpringBoot自動(dòng)配置原理分析,SpringBoot是我們經(jīng)常使用的框架,那么你能不能針對(duì)SpringBoot實(shí)現(xiàn)自動(dòng)配置做一個(gè)詳細(xì)的介紹。如果可以的話,能不能畫(huà)一下實(shí)現(xiàn)自動(dòng)配置的流程圖。牽扯到哪些關(guān)鍵類(lèi),以及哪些關(guān)鍵點(diǎn)2022-08-08Spring AOP日志框架實(shí)現(xiàn)過(guò)程圖解
這篇文章主要介紹了Spring AOP日志框架實(shí)現(xiàn)過(guò)程圖解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-09-09Springboot輕量級(jí)的監(jiān)控組件SpringbootAdmin
這篇文章主要為大家介紹了Springboot輕量級(jí)的監(jiān)控組件SpringbootAdmin使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-02-02BeanUtils.copyProperties()拷貝id屬性失敗的原因及解決
這篇文章主要介紹了BeanUtils.copyProperties()拷貝id屬性失敗的原因及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-09-09