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

