溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Spring如何實(shí)例化bean

發(fā)布時(shí)間:2021-08-19 15:01:17 來(lái)源:億速云 閱讀:152 作者:小新 欄目:編程語(yǔ)言

這篇文章主要為大家展示了“Spring如何實(shí)例化bean”,內(nèi)容簡(jiǎn)而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“Spring如何實(shí)例化bean”這篇文章吧。

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>

以上是“Spring如何實(shí)例化bean”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI