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項(xiàng)目打包成war包并部署在tomcat上運(yùn)行的操作步驟
我們開(kāi)發(fā) SpringBoot 項(xiàng)目有時(shí)我們會(huì)需要打包成 war 包,放入外置的 Tomcat 中進(jìn)行運(yùn)行,或者使用工具idea直接啟動(dòng),便于開(kāi)發(fā)調(diào)試,本文給大家分享SpringBoot項(xiàng)目打包成war包并部署在tomcat上運(yùn)行的操作步驟,感興趣的朋友一起看看吧2024-03-03
spring boot配置ssl實(shí)現(xiàn)HTTPS的方法
這篇文章主要介紹了spring boot配置ssl實(shí)現(xiàn)HTTPS的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2019-03-03
JDK動(dòng)態(tài)代理提高代碼可維護(hù)性和復(fù)用性利器
這篇文章主要為大家介紹了JDK動(dòng)態(tài)代理提高代碼可維護(hù)性和復(fù)用性利器,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-10-10
基于Java中對(duì)域和靜態(tài)方法的訪問(wèn)不具有多態(tài)性(實(shí)例講解)
下面小編就為大家?guī)?lái)一篇基于Java中對(duì)域和靜態(tài)方法的訪問(wèn)不具有多態(tài)性(實(shí)例講解)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-10-10
Java面試題沖刺第三十天--數(shù)據(jù)庫(kù)(6)
這篇文章主要為大家分享了最有價(jià)值的三道關(guān)于數(shù)據(jù)庫(kù)的面試題,涵蓋內(nèi)容全面,包括數(shù)據(jù)結(jié)構(gòu)和算法相關(guān)的題目、經(jīng)典面試編程題等,感興趣的小伙伴們可以參考一下2021-09-09
SpringBoot中對(duì)SpringMVC的自動(dòng)配置詳解
這篇文章主要介紹了SpringBoot中的SpringMVC自動(dòng)配置詳解,Spring MVC自動(dòng)配置是Spring Boot提供的一種特性,它可以自動(dòng)配置Spring MVC的相關(guān)組件,簡(jiǎn)化了開(kāi)發(fā)人員的配置工作,需要的朋友可以參考下2023-10-10
深入理解Java設(shè)計(jì)模式之狀態(tài)模式
這篇文章主要介紹了JAVA設(shè)計(jì)模式之職責(zé)鏈模式的的相關(guān)資料,文中示例代碼非常詳細(xì),供大家參考和學(xué)習(xí),感興趣的朋友可以了解2021-11-11

