spring IOC 控制反轉(zhuǎn) DI 依賴注入

Spring的核心是控制反轉(zhuǎn)(IOC)和面向切面(AOP)

Spring的優(yōu)點(diǎn)
  • 解耦
    Spring就是一個(gè)容器算利,可以將所有對象創(chuàng)建和依賴關(guān)系維護(hù)燥撞,交給Spring管理
    spring工廠是用于生成bean
  • 面向切面
    Spring提供面向切面編程椒振,可以方便的實(shí)現(xiàn)對程序進(jìn)行權(quán)限攔截嘉抒、運(yùn)行監(jiān)控等功能
  • 聲明式事務(wù)的支持
    只需要通過配置就可以完成對事務(wù)的管理姿鸿,而無需手動(dòng)編程
  • 方便測試
    Spring對Junit4支持殖卑,可以通過注解方便的測試Spring程序
  • 聚合
    Spring內(nèi)部提供了對各種優(yōu)秀框架(如:Struts站削、Hibernate、MyBatis孵稽、Quartz等)的直接支持
  • 封裝
    Spring 對JavaEE開發(fā)中的一些API许起,都提供了封裝十偶,使 這些API應(yīng)用難度大大降低
控制反轉(zhuǎn)(IOC)

在IOC出現(xiàn)之前 需要用到的bean是通過new出來直接引用的,IOC控制反轉(zhuǎn)之后需要實(shí)例對象時(shí)园细,從spring工廠中獲得惦积,需要將實(shí)現(xiàn)類的全限定名稱配置到xml文件中 ,通過<bean> 配置需要?jiǎng)?chuàng)建的對象。

    <bean id="用于之后從spring容器獲得實(shí)例時(shí)使用的" class="需要?jiǎng)?chuàng)建實(shí)例的全限定類名"></bean>

當(dāng)前配置bean 可以通過 applicationContext.getBean();來直接從容器中獲取猛频。

依賴注入(DI)

spring 提供依賴注入后可以直接在工廠中將dao層注入service實(shí)現(xiàn)類狮崩。
property 標(biāo)簽用于進(jìn)行屬性注入。
name屬性bean的屬性名鹿寻。
ref :另一個(gè)bean的id值的引用睦柴。
value :當(dāng)前屬性值。
集合的注入都是給<property>添加子標(biāo)簽

  • 數(shù)組 <array>
  • List:<list>
  • Set:<set>
  • Map:<map> 毡熏,map存放k/v 鍵值對坦敌,使用<entry>描述
  • Properties:<props> <prop key=""></prop>
    <!-- 創(chuàng)建service -->
    <bean id="serviceId" class="全類名">
        <property name="指定Dao名" ref="dao實(shí)例Id"></property>
    </bean>

    <!-- 創(chuàng)建dao實(shí)例 -->
    <bean id="daoId" class="全類名"></bean>

依賴注入方式:

  • 手動(dòng)裝配:一般進(jìn)行配置信息都采用手動(dòng)基于xml裝配:構(gòu)造方法、setter方法
  • 基于注解裝配

構(gòu)造方法注入

 構(gòu)造方法注入 
        * <constructor-arg> 用于配置構(gòu)造方法一個(gè)參數(shù)argument
            name :參數(shù)的名稱
            value:設(shè)置普通數(shù)據(jù)
            ref:引用數(shù)據(jù)痢法,一般是另一個(gè)bean id值

            index :參數(shù)的索引號(hào)狱窘,從0開始 。如果只有索引财搁,匹配到了多個(gè)構(gòu)造方法時(shí)蘸炸,默認(rèn)使用第一個(gè)。
            type :確定參數(shù)類型
        例如:使用名稱name
            <constructor-arg name="name" value="thy"></constructor-arg>
            <constructor-arg name="sex" value="1"></constructor-arg>
        例如2:【類型type 和  索引 index】
            <constructor-arg index="0" type="java.lang.String" value="1"></constructor-arg>
            <constructor-arg index="1" type="java.lang.Integer" value="2"></constructor-arg>

setter方法注入

        * 普通數(shù)據(jù) 
            <property name="" value="值">
            等效
            <property name="">
                <value>值
        * 引用數(shù)據(jù)
            <property name="" ref="另一個(gè)bean">
            等效
            <property name="">
                <ref bean="另一個(gè)bean"/>

自動(dòng)裝配是基于注解的
使用注解來取代在xml中的配置
常用的注解包括

  • @Component取代<bean class="">
  • @Component("id") 取代 <bean id="" class="">
  • @Repository :dao層
  • @Service:service層
  • @Controller:web層
  • @Value(" ")
  • @Autowired
  • @Resource("名稱")
    注解使用的前提是需要在xml中開啟注解掃描
<context:component-scan base-package="com.itheima.g_annotation.a_ioc"></context:component-scan>
</beans>
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末尖奔,一起剝皮案震驚了整個(gè)濱河市搭儒,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌越锈,老刑警劉巖仗嗦,帶你破解...
    沈念sama閱讀 211,817評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件膘滨,死亡現(xiàn)場離奇詭異甘凭,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)火邓,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,329評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門丹弱,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人铲咨,你說我怎么就攤上這事躲胳。” “怎么了纤勒?”我有些...
    開封第一講書人閱讀 157,354評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵坯苹,是天一觀的道長。 經(jīng)常有香客問我摇天,道長粹湃,這世上最難降的妖魔是什么恐仑? 我笑而不...
    開封第一講書人閱讀 56,498評(píng)論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮为鳄,結(jié)果婚禮上裳仆,老公的妹妹穿的比我還像新娘。我一直安慰自己孤钦,他們只是感情好歧斟,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,600評(píng)論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著偏形,像睡著了一般静袖。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上俊扭,一...
    開封第一講書人閱讀 49,829評(píng)論 1 290
  • 那天勾徽,我揣著相機(jī)與錄音,去河邊找鬼统扳。 笑死喘帚,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的咒钟。 我是一名探鬼主播吹由,決...
    沈念sama閱讀 38,979評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼朱嘴!你這毒婦竟也來了倾鲫?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,722評(píng)論 0 266
  • 序言:老撾萬榮一對情侶失蹤萍嬉,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后壤追,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,189評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡溺蕉,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,519評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了悼做。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片疯特。...
    茶點(diǎn)故事閱讀 38,654評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖漓雅,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情邻吞,我是刑警寧澤庶灿,帶...
    沈念sama閱讀 34,329評(píng)論 4 330
  • 正文 年R本政府宣布,位于F島的核電站吃衅,受9級(jí)特大地震影響往踢,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜徘层,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,940評(píng)論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望瘦癌。 院中可真熱鬧,春花似錦讯私、人聲如沸西傀。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,762評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽娘锁。三九已至饺鹃,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間悔详,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,993評(píng)論 1 266
  • 我被黑心中介騙來泰國打工缝驳, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留责蝠,地道東北人党巾。 一個(gè)月前我還...
    沈念sama閱讀 46,382評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像驳规,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,543評(píng)論 2 349

推薦閱讀更多精彩內(nèi)容