成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

springbean-創(chuàng)新互聯(lián)

(參考內(nèi)容)springbean

Bean的作用域###

Singleton 單例 在Spring IOC 容器僅存在一個(gè)Bean實(shí)例,Bean以單例方式存在,這個(gè)是默認(rèn)值。
prototype 原型 每次從容器調(diào)用bean時(shí),都會(huì)返回一個(gè)新的實(shí)例,也就是每次調(diào)用getBean()時(shí)都會(huì)實(shí)例化一個(gè)新的bean。
request 每次HTTP請(qǐng)求都會(huì)創(chuàng)建一個(gè)新的Bean,該作用于僅適用于web環(huán)境
session 每個(gè)HTTP Session共享一個(gè)Bean,不同的Session使用不同的Bean,同樣只適用于web環(huán)境。
Global Session 一般作用于Portlet應(yīng)用環(huán)境,只作用于Web環(huán)境。
五種作用域中,其中request、session、global session三種作用域僅適用于web環(huán)境

創(chuàng)新互聯(lián)專(zhuān)注于夾江企業(yè)網(wǎng)站建設(shè),成都響應(yīng)式網(wǎng)站建設(shè)公司,商城系統(tǒng)網(wǎng)站開(kāi)發(fā)。夾江網(wǎng)站建設(shè)公司,為夾江等地區(qū)提供建站服務(wù)。全流程定制網(wǎng)站,專(zhuān)業(yè)設(shè)計(jì),全程項(xiàng)目跟蹤,創(chuàng)新互聯(lián)專(zhuān)業(yè)和態(tài)度為您提供的服務(wù)

Bean初始化###

bean對(duì)象無(wú)外乎是在以下兩個(gè)時(shí)刻進(jìn)行實(shí)例化的:

調(diào)用getBean()方法時(shí)。
Spring容器啟動(dòng)時(shí)。

  • bean的作用域?yàn)閟ingleton時(shí),bean對(duì)象是在Spring容器啟動(dòng)時(shí)就進(jìn)行創(chuàng)建。
    但我們也可以指定bean節(jié)點(diǎn)的lazy-init=“true”來(lái)延遲初始化bean,這時(shí)候,只有第一次獲取bean會(huì)才初始化bean。
    如果想對(duì)所有bean都應(yīng)用延遲初始化,可以在根節(jié)點(diǎn)beans設(shè)置default-lazy-init=“true”,如下:

      <?xml version="1.0" encoding="UTF-8"?>
      <beans xmlns="http://www.springframework.org/schema/beans"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://www.springframework.org/schema/beans
              http://www.springframework.org/schema/beans/spring-beans.xsd" default-lazy-init="true">
      
          ......
      
      </beans>
  • bean的作用域?yàn)閜rototype時(shí),bean對(duì)象并不會(huì)在Spring容器啟動(dòng)時(shí)就進(jìn)行創(chuàng)建,bean對(duì)象將會(huì)在調(diào)用getBean()方法時(shí)進(jìn)行創(chuàng)建。

初始化方法和銷(xiāo)毀方法###

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd">

    <bean id="personService" class="cn.itcast.service.impl.PersonServiceBean" lazy-init="false" 
          init-method="init" destroy-method="destroy" />

</beans>

將會(huì)在bean初始化和銷(xiāo)毀的時(shí)候,執(zhí)行bean內(nèi)的方法。
試著思考這樣一個(gè)問(wèn)題:bean對(duì)象到底是什么時(shí)候銷(xiāo)毀的呢?答案是:如果沒(méi)有人為地刪除它,默認(rèn)該bean一直在Spring容器中,也就是說(shuō)隨著Spring容器的關(guān)閉,該bean才會(huì)被銷(xiāo)毀。

Autowire Resource 比較###

@Autowired默認(rèn)按類(lèi)型裝配,@Resource默認(rèn)按名稱(chēng)裝配,當(dāng)找不到與名稱(chēng)匹配的bean才會(huì)按類(lèi)型裝配
@Autowired + @Qualifier("...") = @Resource(name="...")

@Autowired注解是按類(lèi)型裝配依賴(lài)對(duì)象,默認(rèn)情況下它要求依賴(lài)對(duì)象必須存在,如果允許null值,可以設(shè)置它的required屬性為false。如:

@Autowired(required=true) @Qualifier("personDaoxxxx") private PersonDao personDao;  

required=true代表字段personDao必須要注入值,也即是說(shuō)在Spring容器中根據(jù)類(lèi)型找不到對(duì)應(yīng)的bean,那就會(huì)報(bào)異常;
required=false意味著在Spring容器中根據(jù)類(lèi)型找不到對(duì)應(yīng)的的bean,就會(huì)把該字段設(shè)為null。

  • 依賴(lài)注入——自動(dòng)裝配依賴(lài)對(duì)象

      <bean id="..." class="..." autowire="byType"/>

    autowire屬性取值如下:

    • byType:按類(lèi)型裝配,可以根據(jù)屬性的類(lèi)型,在容器中尋找跟該類(lèi)型匹配的bean。如果發(fā)現(xiàn)多個(gè),那么將會(huì)拋出異常。如果沒(méi)有找到,即屬性值為null。
    • byName:按名稱(chēng)裝配,可以根據(jù)屬性的名稱(chēng),在容器中尋找跟該屬性名相同的bean,如果沒(méi)有找到,即屬性值為null。
    • constructor與byType的方式類(lèi)似,不同之處在于它應(yīng)用于構(gòu)造器參數(shù)。如果在容器中沒(méi)有找到與構(gòu)造器參數(shù)類(lèi)型一致的bean,那么將會(huì)拋出異常。
    • autodetect:通過(guò)bean類(lèi)的自省機(jī)制(introspection)來(lái)決定是使用constructor還是byType方式進(jìn)行自動(dòng)裝配。如果發(fā)現(xiàn)默認(rèn)的構(gòu)造器,那么將使用byType方式。

@Resource默認(rèn)按名稱(chēng)裝配

@Resource(name="personDaoBean")
private PersonDao personDao; // 用于字段上

@Resource
public void setPersonDao(PersonDao personDao) { // 用于屬性的setter方法上
    this.personDao = personDao;
}

注意:如果沒(méi)有指定name屬性,并且按照默認(rèn)的名稱(chēng)仍然找不到依賴(lài)對(duì)象時(shí), @Resource注解會(huì)回退到按類(lèi)型裝配。但一旦指定了name屬性,就只能按名稱(chēng)裝配了。

@Resource裝配順序
  1. 如果同時(shí)指定了name和type,則從Spring上下文中找到唯一匹配的bean進(jìn)行裝配,找不到則拋出異常
  2. 如果指定了name,則從上下文中查找名稱(chēng)(id)匹配的bean進(jìn)行裝配,找不到則拋出異常
  3. 如果指定了type,則從上下文中找到類(lèi)型匹配的唯一bean進(jìn)行裝配,找不到或者找到多個(gè),都會(huì)拋出異常
  4. 如果既沒(méi)有指定name,又沒(méi)有指定type,則自動(dòng)按照byName方式進(jìn)行裝配;如果沒(méi)有匹配,則回退為一個(gè)原始類(lèi)型進(jìn)行匹配,如果匹配則自動(dòng)裝配;

舉例如下:

@Resource 
private PersonDao personDao; 
<bean id="personDao" class="cn.itcast.dao.impl.PersonDaoBean"></bean> 可以
<bean id="personDaoxxxx" class="cn.itcast.dao.impl.PersonDaoBean"></bean> 可以

@Resource(name="personDaoxxxx") 
private PersonDao personDao;
<bean id="personDao" class="cn.itcast.dao.impl.PersonDaoBean"></bean> 不可以
<bean id="personDaoxxxx" class="cn.itcast.dao.impl.PersonDaoBean"></bean> 可以

網(wǎng)站標(biāo)題:springbean-創(chuàng)新互聯(lián)
瀏覽路徑:http://jinyejixie.com/article40/jsiho.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供全網(wǎng)營(yíng)銷(xiāo)推廣關(guān)鍵詞優(yōu)化、網(wǎng)站導(dǎo)航網(wǎng)站維護(hù)、網(wǎng)站設(shè)計(jì)公司響應(yīng)式網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設(shè)公司
大关县| 犍为县| 湖口县| 淮南市| 清远市| 和政县| 尖扎县| 壤塘县| 重庆市| 宜宾市| 重庆市| 鸡西市| 玉溪市| 平陆县| 曲麻莱县| 甘泉县| 辽阳市| 平罗县| 平陆县| 连州市| 屏山县| 永济市| 浙江省| 当阳市| 聂拉木县| 图片| 淳安县| 鄂伦春自治旗| 海兴县| 辽中县| 抚顺市| 晋州市| 南投市| 金阳县| 东明县| 塔河县| 元氏县| 蒙自县| 清流县| 台北市| 孝感市|