Spring實(shí)例化bean的方式代碼詳解
通過(guò)這篇文章通過(guò)實(shí)例代碼向大家介紹了Spring實(shí)例化bean的幾種方法,接下來(lái)看看具體內(nèi)容吧。
1.使用類構(gòu)造器實(shí)現(xiàn)實(shí)例化(bean的自身構(gòu)造器)
<bean id = "orderService" class="cn.itcast.OrderServiceBean"/>
2.使用靜態(tài)工廠方法實(shí)現(xiàn)實(shí)例化
<bean id = "personService" class = "cn.itcast.OrderFactory" factory-method = "createOrder"/>
public class OrderFactory{
private static OrderFactory orderFactory = new OrderFactory();
private OrderFactory();
public static OrderFactory createOrder(){
return OrderFactory;
}
}
3.使用實(shí)例化工廠方法實(shí)現(xiàn)實(shí)例化(通過(guò)別的實(shí)體的bean)
<bean id = "personServiceFactory" class = "cn.itcast.service.OrderFactory"/>
<bean id = "persionService" factory-bean = "personServiceFactory" foctory-method = "createOrder"/>
public class OrderFactory{
private static OrderService orderService = new OrderService();
private OrderFactory();
public static OrderService createOrderServiceBean{
return OrderService;
}
}
我們通常把負(fù)責(zé)加載bean的BeanFactory或者ApplicationContext叫做Spring容器。兩者都是通過(guò)xml配置文件加載bean,ApplicationContext和BeanFacotry相比,主要區(qū)別在于BeanFacotry是延遲加載,在調(diào)用getBean()的時(shí)候才實(shí)例化要get的bean。如果Bean的某一個(gè)屬性無(wú)法注入,這時(shí)候才會(huì)拋出異常;而ApplicationContext默認(rèn),在初始化自身的時(shí)候就會(huì)對(duì)所有的bean做實(shí)例化,除非對(duì)bean設(shè)置lazy-init="true",這樣有利于檢查所依賴屬性是否能注入。
另外,ApplicationContext提供了更多的擴(kuò)展功能,如對(duì)要加載的資源文件的國(guó)際化'處理,對(duì)BeanPostProcessor的處理,所以在J2EE應(yīng)用中,通常情況下我們都選擇使用ApplicationContext。不管是使用BeanFactory還是ApplicationContext,Spring 默認(rèn)以singleton的方式初始化bean.
對(duì)于BeanFactory的初始化,通常用下面的代碼:
ClassPathResource resource = new ClassPathResource("beans.xml");
BeanFactory factory = new XmlBeanFactory(resource);
對(duì)于ApplicationContext的初始化,通常在web.xml中配置:
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
classpath:conf/Appcontext.xml
</param-value>
</context-param>
<listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener>
總結(jié)
以上就是本文關(guān)于Spring實(shí)例化bean的方式代碼詳解的全部?jī)?nèi)容,希望對(duì)大家有所幫助。感興趣的朋友可以繼續(xù)參閱本站其他相關(guān)專題,如有不足之處,歡迎留言指出。感謝朋友們對(duì)本站的支持!
相關(guān)文章
Spring boot按日切分spring boot的nohup.out日志文件的方法
過(guò)大的日志文件維護(hù)起來(lái)存在諸多問(wèn)題,所以最好是能夠按日或按大小切分日志文件,下面小編給大家?guī)?lái)了Spring boot按日切分spring boot的nohup.out日志文件的方法,一起看看吧2018-08-08
idea創(chuàng)建包含多個(gè)springboot module的maven project的方法
這篇文章主要介紹了idea創(chuàng)建包含多個(gè)springboot module的maven project的方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-09-09
Java ffmpeg 實(shí)現(xiàn)視頻加文字/圖片水印功能(示例代碼)
本文介紹了使用Java和ffmpeg庫(kù)實(shí)現(xiàn)視頻加文字或圖片水印的方法,通過(guò)引入依賴代碼和示例,詳細(xì)說(shuō)明了如何將文字水印和圖片水印添加到視頻中,為需要在視頻中加入水印的開(kāi)發(fā)者提供了實(shí)用的指導(dǎo),這種方法不僅增強(qiáng)了視頻內(nèi)容的版權(quán)保護(hù),也為視頻編輯提供了更多的可能性2024-10-10
JAVA中HTTP基本認(rèn)證(Basic Authentication)實(shí)現(xiàn)
HTTP 基本認(rèn)證是一種簡(jiǎn)單的認(rèn)證方法,本文主要介紹了JAVA中HTTP基本認(rèn)證(Basic Authentication),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2024-07-07
Java編寫(xiě)通用的導(dǎo)出任何對(duì)象列表數(shù)據(jù)到excel的工具類
在工作中經(jīng)常會(huì)遇到列表數(shù)據(jù)的導(dǎo)出,每次需要的時(shí)候都要去開(kāi)發(fā)一次,且數(shù)據(jù)不斷在變化,所以本文將利用Java編寫(xiě)一個(gè)工具類可以導(dǎo)出任何對(duì)象列表數(shù)據(jù)到excel,希望對(duì)大家有所幫助2024-12-12
SpringBoot+Ant Design Vue實(shí)現(xiàn)數(shù)據(jù)導(dǎo)出功能方式
這篇文章主要介紹了SpringBoot+Ant Design Vue實(shí)現(xiàn)數(shù)據(jù)導(dǎo)出功能方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-01-01
java 使用memcached以及spring 配置memcached完整實(shí)例代碼
本篇文章主要介紹了java 使用memcached以及spring 配置memcached完整實(shí)例代碼,具有一定的參考價(jià)值,有興趣的可以了解一下2017-07-07
SpringBoot下使用自定義監(jiān)聽(tīng)事件的流程分析
事件機(jī)制是Spring的一個(gè)功能,目前我們使用了SpringBoot框架,所以記錄下事件機(jī)制在SpringBoot框架下的使用,同時(shí)實(shí)現(xiàn)異步處理,這篇文章主要介紹了SpringBoot下使用自定義監(jiān)聽(tīng)事件,需要的朋友可以參考下2023-08-08
Mybatis開(kāi)發(fā)環(huán)境搭建實(shí)現(xiàn)數(shù)據(jù)的增刪改查功能
這篇文章主要介紹了 Mybatis開(kāi)發(fā)環(huán)境搭建實(shí)現(xiàn)數(shù)據(jù)的增刪改查功能,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2017-03-03

