Spring實戰(zhàn)學(xué)習(xí)(一)

1.Spring簡介

Spring的根本使命:簡化Java開發(fā)纪挎,為了降低Java開發(fā)的復(fù)雜性猫十,Spring采取了以下四種關(guān)鍵策略:

  • 基于POJO的輕量級和最小侵入性變成
  • 通過依賴注入和面向接口實現(xiàn)松耦合
  • 基于切面和慣例進行聲明式編程
  • 通過切面和模板減少樣板式代碼

依賴注入

通過DI對象的依賴關(guān)系將由系統(tǒng)中負(fù)責(zé)協(xié)調(diào)各對象的第三方組件在創(chuàng)建對象的時候進行設(shè)定双谆,對象無須自行創(chuàng)建或管理它們的依賴關(guān)系狸捅。

依賴注入方式
  • 構(gòu)造器注入
  • setter函數(shù)注入
  • 注解注入
應(yīng)用上下文

Spring通過應(yīng)用上下文裝載bean的定義并把它們組裝起來偎巢,Spring應(yīng)用上下文全權(quán)負(fù)責(zé)對象的創(chuàng)建和組裝。

  • 對基于xml的配置屡限,Spring提供了ClassPathXmlApplicationContext應(yīng)用上下文
  • 對基于java的配置,Spring提供了AnnotationConfigApplicationContext應(yīng)用上下文

2.裝配

創(chuàng)建應(yīng)用組件之間協(xié)作的行為稱為裝配炕倘,裝配方式有

  • 基于xml的配置
  • 基于 java的配置
  • 隱式的bean發(fā)現(xiàn)機制和自動裝配

原則: 盡可能地使用自動裝配的機制钧大,顯式配置越少越好

2.1 通過java代碼裝配bean

2.1.1 創(chuàng)建配置類

@Configuration注解表明這個類是一個配置類,該類應(yīng)該包含在應(yīng)用上下文中如何創(chuàng)建bean的細(xì)節(jié)罩旋。

2.1.2 聲明簡單的bean

要在JavaConfig中聲明bean啊央,我們需要編寫一個方法,這個方法會創(chuàng)建所需類型的實例涨醋,然后給這個方法添加@Bean瓜饥。
@Bean注解會告訴Spring這個方法將會返回一個對象,該對象要注冊為Spring應(yīng)用上下文中的bean浴骂,方法體中包含了最終產(chǎn)生bean實例的邏輯乓土。默認(rèn)情況下,bean的ID與帶有@Bean注解的方法名是一樣的溯警。

2.1.3 借助JavaConfig實現(xiàn)注入

通常采用構(gòu)造器和Setter方法將所需要的bean注入進來趣苏。當(dāng)然你也可以使用其他任何方法,只要添加@Bean注解梯轻,并把需要的bean對象注入進來即可食磕。

默認(rèn)情況下,Spring中的bean都是單例的喳挑。

2.2 通過xml裝配bean

2.2.1 創(chuàng)建xml配置規(guī)范

2.2.2 聲明一個簡單的<bean>

<bean id="..." class="..." scope="singleton">
    <!-- collaborators and configuration for this bean go here -->
</bean>

2.2.3 借助構(gòu)造器注入初始化bean

<bean id="textEditor" class="com.tutorialspoint.TextEditor">
      <constructor-arg ref="spellChecker"/>
      <constructor-arg value="Zara"/>
</bean>

如果你想要向一個對象傳遞一個引用彬伦,你需要使用 標(biāo)簽的 ref 屬性,如果你想要直接傳遞值伊诵,那么你應(yīng)該使用如上所示的 value 屬性单绑。
也可以采用c-命名空間簡化配置。

2.2.3 設(shè)置屬性

<bean id="textEditor" class="com.tutorialspoint.TextEditor">
      <property name="spellChecker" ref="spellChecker"/>
</bean>

也可以采用p-命名空間簡化配置日戈。

2.3 自動化裝配

Spring從兩個角度來實現(xiàn)自動化裝配:

  • 組件掃描:spring會自動發(fā)現(xiàn)上下文中所創(chuàng)建的bean
  • 自動裝配:spring自動滿足bean之間的依賴
組件掃描
  • @Component:注解在類上面询张,表明該類會作為組件類,并告知spring要為這個類創(chuàng)建bean
  • @ComponentScan("backageName"):啟用組件掃描浙炼,注解在配置類上面份氧,spring會自動掃描該類所在的包以及這個包下的所有子包唯袄,查找?guī)в蠤Component注解的類,也可以通過在xml文件中增加<context:componet-scan>元素啟用組件掃描蜗帜。

如果只有@ComponentScan恋拷,而沒有設(shè)置屬性,它會以配置類所在所在的包作為基礎(chǔ)包厅缺,如果想自定義不同的基礎(chǔ)包蔬顾,可以在()中進行定義。如下所示:
@ComponentScan(basePackages={"packageName1","packageName2"})
@ComponentScan還提供了另外一種方法湘捎,將其指定為包中所包含的類或接口
@ComponentScan(basePackageClasses=({className1.class,className2.class}),basePackageClasses所設(shè)置的數(shù)組中包含了類诀豁,這些類所在的包將會作為組件掃描的基礎(chǔ)包。

自動裝配

@Autowired注解窥妇,可以作用在構(gòu)造器上舷胜,Setter方法,普通方法上活翩。


令狐.jpg
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末烹骨,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子材泄,更是在濱河造成了極大的恐慌沮焕,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,104評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件拉宗,死亡現(xiàn)場離奇詭異峦树,居然都是意外死亡,警方通過查閱死者的電腦和手機簿废,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,816評論 3 399
  • 文/潘曉璐 我一進店門空入,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人族檬,你說我怎么就攤上這事歪赢。” “怎么了单料?”我有些...
    開封第一講書人閱讀 168,697評論 0 360
  • 文/不壞的土叔 我叫張陵埋凯,是天一觀的道長。 經(jīng)常有香客問我扫尖,道長白对,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,836評論 1 298
  • 正文 為了忘掉前任换怖,我火速辦了婚禮甩恼,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己条摸,他們只是感情好悦污,可當(dāng)我...
    茶點故事閱讀 68,851評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著钉蒲,像睡著了一般切端。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上顷啼,一...
    開封第一講書人閱讀 52,441評論 1 310
  • 那天踏枣,我揣著相機與錄音,去河邊找鬼钙蒙。 笑死茵瀑,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的躬厌。 我是一名探鬼主播瘾婿,決...
    沈念sama閱讀 40,992評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼烤咧!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起抢呆,我...
    開封第一講書人閱讀 39,899評論 0 276
  • 序言:老撾萬榮一對情侶失蹤煮嫌,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后抱虐,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體昌阿,經(jīng)...
    沈念sama閱讀 46,457評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,529評論 3 341
  • 正文 我和宋清朗相戀三年恳邀,在試婚紗的時候發(fā)現(xiàn)自己被綠了懦冰。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,664評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡谣沸,死狀恐怖刷钢,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情乳附,我是刑警寧澤内地,帶...
    沈念sama閱讀 36,346評論 5 350
  • 正文 年R本政府宣布,位于F島的核電站赋除,受9級特大地震影響阱缓,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜举农,卻給世界環(huán)境...
    茶點故事閱讀 42,025評論 3 334
  • 文/蒙蒙 一荆针、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦航背、人聲如沸喉悴。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,511評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽粥惧。三九已至,卻和暖如春最盅,著一層夾襖步出監(jiān)牢的瞬間突雪,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,611評論 1 272
  • 我被黑心中介騙來泰國打工涡贱, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留咏删,地道東北人。 一個月前我還...
    沈念sama閱讀 49,081評論 3 377
  • 正文 我出身青樓问词,卻偏偏與公主長得像督函,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子激挪,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,675評論 2 359

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

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理辰狡,服務(wù)發(fā)現(xiàn),斷路器垄分,智...
    卡卡羅2017閱讀 134,704評論 18 139
  • 1.1 spring IoC容器和beans的簡介 Spring 框架的最核心基礎(chǔ)的功能是IoC(控制反轉(zhuǎn))容器宛篇,...
    simoscode閱讀 6,721評論 2 22
  • Spring Boot 參考指南 介紹 轉(zhuǎn)載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 46,859評論 6 342
  • 1.1 Spring IoC容器和bean簡介 本章介紹了Spring Framework實現(xiàn)的控制反轉(zhuǎn)(IoC)...
    起名真是難閱讀 2,587評論 0 8
  • 本章內(nèi)容: 聲明Bean 構(gòu)造器注入和Setter方法注入 裝配Bean 控制bean的創(chuàng)建和銷毀 任何一個成功的...
    謝隨安閱讀 1,648評論 0 9