圖解Spring容器中實(shí)例化bean的四種方式
前言
Spring IOC容器如何實(shí)例化Bean呢?傳統(tǒng)應(yīng)用程序可以通過new和反射方式進(jìn)行實(shí)例化Bean。而Spring IOC容器則需要根據(jù) Bean 定義里的配置元數(shù)據(jù),使用反射機(jī)制來創(chuàng)建Bean。
在Spring IOC容器中根據(jù)Bean定義創(chuàng)建Bean主要有以下幾種方式:
1.使用構(gòu)造器實(shí)例化Bean
這是最簡(jiǎn)單的方式,Spring IOC容器既能使用1.默認(rèn)空構(gòu)造器也能使用2.有參數(shù)構(gòu)造器兩種方式創(chuàng)建Bean,如以下方式指定要?jiǎng)?chuàng)建的Bean類型:
1.1 使用空構(gòu)造器
使用空構(gòu)造器進(jìn)行定義,使用此種方式,class屬性指定的類必須有空構(gòu)造器

1.2 使用有參構(gòu)造器
使用有參構(gòu)造器進(jìn)行定義,使用此種方式,可以使用<constructor-arg>標(biāo)簽指定構(gòu)造器參數(shù)值,其中index表示位置,value表示常量值,也可以指定引用,指定引用使用ref來引用另一個(gè)Bean定義;

2.使用靜態(tài)工廠方式實(shí)例化Bean
使用這種方式,除了指定必須的class屬性,還要使用factory-method屬性來指定實(shí)例化Bean的方法,而且使用靜態(tài)工廠方法也允許指定方法參數(shù),spring IOC容器將調(diào)用此屬性指定的方法來獲取Bean。
Hello.java

靜態(tài)工廠類,返回一個(gè)Hello對(duì)象

靜態(tài)工廠類,返回一個(gè)Hello對(duì)象

測(cè)試類,輸出helloworld

3.使用實(shí)例工廠方法實(shí)例化Bean
使用這種方式不能指定class屬性,此時(shí)必須使用factory-bean屬性來指定工廠Bean,factory-method屬性指定實(shí)例化Bean的方法,而且使用實(shí)例工廠方法允許指定方法參數(shù),方式和使用構(gòu)造器方式一樣。
Hello.java

實(shí)例工廠方法 HelloInstanceFactory1.java(只是去掉了static關(guān)鍵字)

bean配置

測(cè)試類,輸出helloworld2

4.用 setter 方式

bean配置

這種方式,只要寫上對(duì)應(yīng)的set、get方法,然后再bean.xml文件中利用property注入值即可
到此這篇關(guān)于圖解Spring容器中實(shí)例化bean的四種方式的文章就介紹到這了,更多相關(guān)Spring實(shí)例化bean內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
java MyBatis攔截器Inteceptor詳細(xì)介紹
這篇文章主要介紹了java MyBatis攔截器Inteceptor詳細(xì)介紹的相關(guān)資料,需要的朋友可以參考下2016-11-11
Spring Cloud Alibaba 之 Nacos教程詳解
Nacos是阿里的一個(gè)開源產(chǎn)品,它是針對(duì)微服務(wù)架構(gòu)中的服務(wù)發(fā)現(xiàn)、配置管理、服務(wù)治理的綜合性解決方案。這篇文章主要介紹了Spring Cloud Alibaba 之 Nacos的相關(guān)知識(shí),需要的朋友可以參考下2020-11-11
Java實(shí)現(xiàn)動(dòng)態(tài)代理
本文給大家介紹的是java使用動(dòng)態(tài)代理類實(shí)現(xiàn)動(dòng)態(tài)代理的方法和示例,這里推薦給大家,有需要的小伙伴參考下吧2015-02-02
解決bootstrap.yml不生效,無法優(yōu)先于application.yml文件加載問題
文章主要討論了在Spring Boot項(xiàng)目中,`bootstrap.yml`文件無法優(yōu)先于`application.yml`文件加載的問題,原因是缺少了`nacos-config`依賴,且需要確保Spring Boot版本與`nacos-config`版本匹配,作者希望通過分享個(gè)人經(jīng)驗(yàn),幫助他人解決類似問題2024-12-12
Java selenium上傳文件的實(shí)現(xiàn)
本文主要介紹了Java selenium上傳文件的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-04-04

