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