SpringBoot 入門篇(二) SpringBoot常用注解以及自動配置

一、SpringBoot常用注解

二改含、SpringBoot自動配置機(jī)制

SpringBoot版本:1.5.13.RELEASE
對應(yīng)官方文檔鏈接:https://docs.spring.io/spring-boot/docs/1.5.13.RELEASE/reference/htmlsingle/

上一篇:SpringBoot 入門篇(一) Hello World


一向抢、SpringBoot常用注解

??在上一篇文章中引用了官方文檔的入門例子,這個例子中只是告訴我們?nèi)绾稳タ焖偕鲜諷pringBoot,我們實際開發(fā)中,肯定不會在一個類中把所有業(yè)務(wù)處理包圓静檬,通常會劃分出Controller層、Service層并级、Dao層等拂檩。SpringBoot官方文檔給出了如何去規(guī)劃我們的代碼,并且如何正確使用它們死遭。
??官方文檔給出了一個常用的代碼層次劃分結(jié)構(gòu)圖

??官方文檔推薦將包含main方法的類放到項目的根包下,并且使用@SpringBootApplication注解進(jìn)行標(biāo)注凯旋,該注解會將當(dāng)前類所在路徑作為基準(zhǔn)目錄呀潭,掃描基準(zhǔn)目錄下所有類(包含子目錄中的類)钉迷。
??@SpringBootApplication是SpringBoot提供的一個常用注解,它包含了另外3個很常用的注解钠署,分別是@EnableAutoConfiguration糠聪,@ComponentScan和@Configuration。

@SpringBootApplication // 等價于 @Configuration + @EnableAutoConfiguration + @ComponentScan
public class Application {

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }

}

(1)@EnableAutoConfiguration是SpringBoot提供的一個注解谐鼎,它的作用是啟動SpringBoot的自動配置機(jī)制舰蟆;
(2)@ComponentScan是Spring框架提供的一個注解,它能掃描項目中所有的組件(@Component, @Service, @Repository, @Controller等進(jìn)行標(biāo)注的類)并將其注冊到Spring容器狸棍;
(3)@Configuration是Spring框架提供的一個注解身害,它能替代傳統(tǒng)的xml配置文件,將Spring框架中的xml文件以Java類的形式替代草戈,去XML是SpringBoot的一個重要思想塌鸯。
??在項目中我們可以將類同時標(biāo)注@EnableAutoConfiguration、@ComponentScan和@Configuration唐片,所起的作用和@SpringBootApplication是相同的丙猬,但需要注意的是,@EnableAutoConfiguration费韭、@ComponentScan和@Configuration這3個注解并非是捆綁銷售茧球,我們可以將他們?nèi)我饨M合。官方文檔中給出了如下的一個例子

@Configuration
@EnableAutoConfiguration
@Import({ MyConfig.class, MyAnotherConfig.class })
public class Application {

    public static void main(String[] args) {
            SpringApplication.run(Application.class, args);
    }

}

可以看到星持,代碼中并沒有使用@ComponentScan注解抢埋,而是使用@Import注解來導(dǎo)入組件并將其聲明成一個bean。當(dāng)然钉汗,如果我們對XML文件念念不忘羹令,我們可以使用@ImportResource注解來導(dǎo)入XML文件,@Import和@ImportResource都是Spring框架提供的注解损痰。

@Configuration
@EnableAutoConfiguration
@ImportResource(locations={"classpath:applicationContext.xml"})
public class Application {

    public static void main(String[] args) {
            SpringApplication.run(Application.class, args);
    }

}

二福侈、SpringBoot自動配置機(jī)制

??SpringBoot總是嘗試根據(jù)我們的jar依賴,來為我們的項目進(jìn)行一些自動配置以減輕開發(fā)者環(huán)境搭建的負(fù)擔(dān)卢未,例如我們項目中依賴了spring-boot-starter-web肪凛,SpringBoot則會自動為我們進(jìn)行web環(huán)境的配置(如添加內(nèi)置Tomcat、配置SpringMVC等)辽社。
??SpringBoot自動配置的幕前黑手就是上一節(jié)中提到的@EnableAutoConfiguration注解伟墙。SpringBoot自動配置是非入侵的,我們可以開啟我們自己的配置來替代自動配置滴铅,例如如果我們添加了自己的數(shù)據(jù)源配置戳葵,則SpringBoot默認(rèn)內(nèi)置的數(shù)據(jù)庫服務(wù)則不會起作用。
??我們可以在啟動時加入 --debug 參數(shù)來查看當(dāng)前有那些自動配置汉匙,命令行直接執(zhí)行java -jar ***.jar --debug即可拱烁。如果想在IDEA中查看生蚁,則首先進(jìn)行如下配置

執(zhí)行main方法即可看到當(dāng)前有那些自動配置

如果我們不需要某些自動配置,可以通過@EnableAutoConfiguration注解的exclude或者excludeName屬性來指定不需要的自動配置戏自,需要注意的是邦投,當(dāng)不需要的進(jìn)行自動配置的類不在classpath下時,此時只能通過excludeName屬性指定類的全路徑名來排除不需要的自動配置擅笔。當(dāng)然志衣,還有一種辦法是在SpringBoot配置文件中指定spring.autoconfigure.exclude,SpringBoot配置文件一般是指classpath下默認(rèn)的application.properties或者application.yml或者application.yaml猛们,在這里不做說明念脯,后續(xù)的文章會進(jìn)行詳細(xì)介紹。

@Configuration
@EnableAutoConfiguration(exclude={DataSourceAutoConfiguration.class})
public class Application {

    public static void main(String[] args) {
            SpringApplication.run(Application.class, args);
    }

}

上一篇:SpringBoot 入門篇(一) Hello World
下一篇:SpringBoot 入門篇(三) SpringApplication

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末阅懦,一起剝皮案震驚了整個濱河市和二,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌耳胎,老刑警劉巖惯吕,帶你破解...
    沈念sama閱讀 216,651評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異怕午,居然都是意外死亡废登,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,468評論 3 392
  • 文/潘曉璐 我一進(jìn)店門郁惜,熙熙樓的掌柜王于貴愁眉苦臉地迎上來堡距,“玉大人,你說我怎么就攤上這事兆蕉∮鸾洌” “怎么了?”我有些...
    開封第一講書人閱讀 162,931評論 0 353
  • 文/不壞的土叔 我叫張陵虎韵,是天一觀的道長易稠。 經(jīng)常有香客問我,道長包蓝,這世上最難降的妖魔是什么驶社? 我笑而不...
    開封第一講書人閱讀 58,218評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮测萎,結(jié)果婚禮上亡电,老公的妹妹穿的比我還像新娘。我一直安慰自己硅瞧,他們只是感情好份乒,可當(dāng)我...
    茶點故事閱讀 67,234評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般或辖。 火紅的嫁衣襯著肌膚如雪拇勃。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,198評論 1 299
  • 那天孝凌,我揣著相機(jī)與錄音,去河邊找鬼月腋。 笑死蟀架,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的榆骚。 我是一名探鬼主播片拍,決...
    沈念sama閱讀 40,084評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼妓肢!你這毒婦竟也來了捌省?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,926評論 0 274
  • 序言:老撾萬榮一對情侶失蹤碉钠,失蹤者是張志新(化名)和其女友劉穎纲缓,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體喊废,經(jīng)...
    沈念sama閱讀 45,341評論 1 311
  • 正文 獨居荒郊野嶺守林人離奇死亡祝高,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,563評論 2 333
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了污筷。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片工闺。...
    茶點故事閱讀 39,731評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖瓣蛀,靈堂內(nèi)的尸體忽然破棺而出陆蟆,到底是詐尸還是另有隱情,我是刑警寧澤惋增,帶...
    沈念sama閱讀 35,430評論 5 343
  • 正文 年R本政府宣布叠殷,位于F島的核電站,受9級特大地震影響器腋,放射性物質(zhì)發(fā)生泄漏溪猿。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,036評論 3 326
  • 文/蒙蒙 一纫塌、第九天 我趴在偏房一處隱蔽的房頂上張望诊县。 院中可真熱鬧,春花似錦措左、人聲如沸依痊。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,676評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽胸嘁。三九已至瓶摆,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間性宏,已是汗流浹背群井。 一陣腳步聲響...
    開封第一講書人閱讀 32,829評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留毫胜,地道東北人书斜。 一個月前我還...
    沈念sama閱讀 47,743評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像酵使,于是被迫代替她去往敵國和親荐吉。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,629評論 2 354

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

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理口渔,服務(wù)發(fā)現(xiàn)样屠,斷路器,智...
    卡卡羅2017閱讀 134,652評論 18 139
  • Spring Boot 參考指南 介紹 轉(zhuǎn)載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 46,806評論 6 342
  • 前言:學(xué)習(xí)SpringBoot不應(yīng)該直接就是開始使用SpringBoot,如果直接拿來用肯定會有很多人不是很明白特...
    CoderZS閱讀 74,788評論 10 217
  • 入門 介紹 Spring Boot Spring Boot 使您可以輕松地創(chuàng)建獨立的缺脉、生產(chǎn)級的基于 Spring ...
    Hsinwong閱讀 16,881評論 2 89
  • springboot 概述 SpringBoot能夠快速開發(fā)痪欲,簡化部署,適用于微服務(wù) 參考嘟嘟大神SpringBo...
    一紙硯白閱讀 5,420評論 2 20