Spring Bean (IOC)

???????Bean(類)包裝的是一個 Object,把Bean理解為類的代理或代言人(實際上確實是通過反射毛秘、代理來實現(xiàn)的)纯趋,這樣它就能代表類擁有該擁有的東西了
?IOC容器

IOC:  ioc強(qiáng)調(diào)由第三方容器根據(jù)客戶的需求堪滨,創(chuàng)建對象,然后根據(jù)客戶供的方法將對象傳遞給客戶 
容器的本質(zhì): 它就是一個map集合,鍵:id  值:容器創(chuàng)建的對象
DI:  強(qiáng)調(diào)第三方創(chuàng)建對象以后  通過什么方法將對象傳遞過去SpringIOC

XML文件配置方式

一、Bean的創(chuàng)建衰猛、獲取

1、  <bean id="boyId" class="com.wtu.spring.ioc.type1.Boy">
        <property name="name1" value="value1" />
        <property name="name2" value="value2" />
    </bean>
    id:對該Bean的唯一標(biāo)識
    class:類的全路徑
2刹孔、通過中間類的靜態(tài)方法創(chuàng)建
    <bean id="ClassID" class="com.wtu.spring.bean.create2.Middle"
     factory-method="getInstance" />
     factory-method:通過中間類的哪個函數(shù)來創(chuàng)建對象
3啡省、通過中間類的非靜態(tài)方法創(chuàng)建
    首先注冊中間類
    <bean id="middleId" class="com.wtu.spring.bean.create3.Middle"/>
    //依據(jù)中間類來創(chuàng)建對象
    <bean id="ClassID" 
            factory-bean="middleId"
            factory-method="getInstance"/>
    factory-bean:引用中間類的對象
    factory-method:中間類構(gòu)建對象的方法名稱
4、獲取Bean對象
    //啟動IOC容器  
    //ClassPathXmpApplicationContext(String... configLocations);
    ApplicationContext ac = new ClassPathXmlApplicationContext("xmlPath:從src開始");
    Class class = (Class) ac.getBean("CLassID");

二髓霞、bean的繼承

    含義:一個Bean可以繼承另一個bean的屬性
    <bean id="parentID" class="parentClass">
    <property name="name" value="value"/>
    </bean>
    
    <bean id="sonID" class="sonClass" parent="parentID">
    <propertym name="name" value="value"/>
    </bean>
    parent:父親的ID

三卦睹、Bean的單例和多例模式

    scope="prototype" 多例
    默認(rèn)情況下時單例

四、Bean的創(chuàng)建的時間

    lazy-init="true" 懶漢式 
    lazy-init="false" 餓漢式
    在單例模式下,lazy-init的設(shè)置才有用,默認(rèn)情況下是餓漢式方库,即當(dāng)IOC創(chuàng)建后立馬創(chuàng)建相關(guān)對象
    在多例模式下,lazy-init的設(shè)置沒有用结序,直到getBean("ID");時才創(chuàng)建對象

五、Spring DI
強(qiáng)調(diào)的是給Bean的屬賦值纵潦。通常將Bean的屬性以Set的方式賦值給對象的屬性

1徐鹤、屬性:  基本數(shù)據(jù)類型
    <bean id="boyId" class="com.wtu.spring.ioc.type1.Boy">
        <property name="name1" value="value1">/<property>
        <property name="name2" value="value2">/<property>
    </bean>
2、屬性:  類類型
    <bean id="dateId" class="java.util.Date">
    <property name="name" ref="dateId"/>
3邀层、屬性:  集合
    <property name="list">
        <list>
            <value>value1</value>
            <value>value2</value>
        </list>
    </property>

    <property name="name">
        <set>
            <value>value1</value>
            <value>value2</value>
        </set>
    </property>

    <property>
        <map>
            <entry key="key1">
                <value>value1</value>
            </entry>
            <entry key="key2">
                <value>value2</value>
            </entry>
        </map>
    </property>

注解方式

用注解來向Spring容器中注冊Bean,需要在applicationCOntext.xml注冊

<!--首先開啟spring注解的功能 -->
<context:annotation-config/>
<!-- 讓springIOC容器自動去掃描某一個包 創(chuàng)建該包下的bean對象 -->
<context:component-scan base-package="com.wtu.spring.di.annotation2"></context:component-scan>
    當(dāng)該包下的某個類的頭上帶有注解{@Component/@Repository/@Service/Controller}就會將該
類作為Bean注冊到Spring容器中
@Controller    對應(yīng)表現(xiàn)層的Bean凳干,即Action
@Service       對應(yīng)業(yè)務(wù)層Bean
@Repository    對應(yīng)數(shù)據(jù)訪問層Bean
@Component     各層均適用(不推薦)
這四個注解形式在默認(rèn)情況下,生成的Bean的ID(Key)為首字母小寫的類名
也可指定名字eg:@Controller(value="XXX")
@Scope("prototype")只當(dāng)該Bean可以產(chǎn)生多個對象,默認(rèn)是單例

注入: 成員變量

@Resource(name="ClassID") 指定已經(jīng)注冊Bean對象的ID,默認(rèn)按屬性名來查找Bean(ByName)
@Autowired  依據(jù)成員對量的類型在IOC容器中查找Bean對象(ByType)

XML文件配置和注解形式各有優(yōu)缺點被济。

當(dāng)需要注冊的Bean對象來自第三方時,只能通過XML文件配置來實現(xiàn)

擴(kuò)展:
輔助
Spring Bean的生命周期

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市涧团,隨后出現(xiàn)的幾起案子只磷,更是在濱河造成了極大的恐慌,老刑警劉巖泌绣,帶你破解...
    沈念sama閱讀 211,743評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件钮追,死亡現(xiàn)場離奇詭異,居然都是意外死亡阿迈,警方通過查閱死者的電腦和手機(jī)元媚,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,296評論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人刊棕,你說我怎么就攤上這事炭晒。” “怎么了甥角?”我有些...
    開封第一講書人閱讀 157,285評論 0 348
  • 文/不壞的土叔 我叫張陵网严,是天一觀的道長。 經(jīng)常有香客問我嗤无,道長震束,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,485評論 1 283
  • 正文 為了忘掉前任当犯,我火速辦了婚禮垢村,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘嚎卫。我一直安慰自己嘉栓,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 65,581評論 6 386
  • 文/花漫 我一把揭開白布驰凛。 她就那樣靜靜地躺著胸懈,像睡著了一般。 火紅的嫁衣襯著肌膚如雪恰响。 梳的紋絲不亂的頭發(fā)上趣钱,一...
    開封第一講書人閱讀 49,821評論 1 290
  • 那天,我揣著相機(jī)與錄音胚宦,去河邊找鬼首有。 笑死,一個胖子當(dāng)著我的面吹牛枢劝,可吹牛的內(nèi)容都是我干的井联。 我是一名探鬼主播,決...
    沈念sama閱讀 38,960評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼您旁,長吁一口氣:“原來是場噩夢啊……” “哼烙常!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起鹤盒,我...
    開封第一講書人閱讀 37,719評論 0 266
  • 序言:老撾萬榮一對情侶失蹤蚕脏,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后侦锯,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體驼鞭,經(jīng)...
    沈念sama閱讀 44,186評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,516評論 2 327
  • 正文 我和宋清朗相戀三年尺碰,在試婚紗的時候發(fā)現(xiàn)自己被綠了挣棕。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片译隘。...
    茶點故事閱讀 38,650評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖洛心,靈堂內(nèi)的尸體忽然破棺而出固耘,到底是詐尸還是另有隱情,我是刑警寧澤皂甘,帶...
    沈念sama閱讀 34,329評論 4 330
  • 正文 年R本政府宣布玻驻,位于F島的核電站,受9級特大地震影響偿枕,放射性物質(zhì)發(fā)生泄漏璧瞬。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,936評論 3 313
  • 文/蒙蒙 一渐夸、第九天 我趴在偏房一處隱蔽的房頂上張望嗤锉。 院中可真熱鬧,春花似錦墓塌、人聲如沸瘟忱。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,757評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽访诱。三九已至,卻和暖如春韩肝,著一層夾襖步出監(jiān)牢的瞬間触菜,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,991評論 1 266
  • 我被黑心中介騙來泰國打工哀峻, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留涡相,地道東北人。 一個月前我還...
    沈念sama閱讀 46,370評論 2 360
  • 正文 我出身青樓剩蟀,卻偏偏與公主長得像催蝗,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子育特,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,527評論 2 349