初識Spring Boot

一褒链,簡介

Spring Boot 是所有基于 Spring 開發(fā)的項(xiàng)目的起點(diǎn)。Spring Boot 的設(shè)計(jì)是為了讓你盡可能快的跑起來 Spring 應(yīng)用程序并且盡可能減少你的配置文件姻僧。

SpringBoot 是一個(gè)快速開發(fā)的框架,能夠快速的整合第三方框架,簡化XML配置蒲牧,全部采用注解形式撇贺,內(nèi)置Tomcat容器,幫助開發(fā)者能夠?qū)崿F(xiàn)快速開發(fā),SpringBoot的Web組件 默認(rèn)集成的是SpringMVC框架冰抢。SpringMVC是控制層松嘶。

SpringCloud依賴與SpringBoot組件,使用SpringMVC編寫Http協(xié)議接口挎扰,同時(shí)SpringCloud是一套完整的微服務(wù)解決框架翠订。

二,用IEAD快速搭建一個(gè)Spring Boo項(xiàng)目

第一步遵倦,新建項(xiàng)目

選擇Spring Initializr?尽超,選擇默認(rèn)url,下一步


修改項(xiàng)目信息梧躺,下一步?

勾選上web模板似谁,下一步

設(shè)置好項(xiàng)目名稱和項(xiàng)目位置,點(diǎn)擊完成

項(xiàng)目建好后的目錄結(jié)構(gòu)

l?DemoApplication掠哥,項(xiàng)目主程序巩踏,用于啟動(dòng)項(xiàng)目

l?DemoApplicationTests,一個(gè)空的Junit?測試程序

l?application.properties:一個(gè)空的?properties?文件续搀,可以根據(jù)需要添加

l?pom.xml:?Maven?構(gòu)建說明文件

第二步塞琼,創(chuàng)建HelloController

在com.example.demo?下新建HelloController?類


@RestController 注解,返回內(nèi)容以json格式呈現(xiàn)禁舷。

@RequestMapping 注解彪杉,Spring MVC 控制器方法的映射地址


第三步,啟動(dòng)項(xiàng)目

回到DemoApplication項(xiàng)目主程序榛了,右鍵運(yùn)行“DemoApplication”

項(xiàng)目啟動(dòng)完成在讶,默認(rèn)端口為:8080,我們在瀏覽器中輸入地址:http://127.0.0.1:8080/hello,即可以看到效果








三霜大,SpringBoot整合全局捕獲異常

整個(gè)web項(xiàng)目全局捕獲異常构哺,當(dāng)項(xiàng)目中有錯(cuò)誤通過全局捕獲異常,發(fā)送異常通知。

例子:

第一步曙强,新建demo.example.error 包残拐,創(chuàng)建GlobalExceptionHandler類,貼入代碼


@ExceptionHandler 表示攔截異常碟嘴,RuntimeException.class表示攔截運(yùn)行時(shí)異常

@ControllerAdvice 是 controller 的一個(gè)輔助類溪食,最常用的就是作為全局異常處理的切面類

@ControllerAdvice 可以指定掃描范圍,basePackages掃包范圍

@ControllerAdvice 約定了幾種可行的返回值娜扇,如果是直接返回 model 類的話错沃,需要使用 @ResponseBody 進(jìn)行 json 轉(zhuǎn)換


第二步,創(chuàng)建測試異橙钙埃控制器ErrorController



第三步枢析,啟動(dòng)項(xiàng)目檢驗(yàn)異常捕獲

訪問地址http://127.0.0.1:8080/getUser?i=0


四,集成lombok 讓代碼更簡潔

Lombok?是一種Java?實(shí)用工具刃麸,可用來幫助開發(fā)人員消除 Java 的冗長醒叁,尤其是對于簡單的 Java 對象(POJO)。它通過注解實(shí)現(xiàn)這一目的泊业。

第一步把沼,添加Spring Boot 依賴,在pom.xml中添加如下相關(guān)依賴

<dependency>???<groupId>org.projectlombok</groupId>???<artifactId>lombok</artifactId></dependency>


第二步吁伺,安裝IDEA支持插件饮睬,讓IDEA能夠識別他

在文件,設(shè)置篮奄,plugins续捂,Browse Repostories 中搜索lombok,選擇安裝





第三步,使用lombok

傳統(tǒng)方法需要get和set方法



使用lombok?寫法就很簡單了

或者


常用注解有:

l?@NonNull:給方法參數(shù)增加這個(gè)注解會(huì)自動(dòng)在方法內(nèi)對該參數(shù)進(jìn)行是否為空的校驗(yàn)宦搬,如果為空,則拋出NPE(NullPointerException)

l?@Cleanup:自動(dòng)管理資源劫拗,用在局部變量之前间校,在當(dāng)前變量范圍內(nèi)即將執(zhí)行完畢退出之前會(huì)自動(dòng)清理資源,自動(dòng)生成try-finally這樣的代碼來關(guān)閉流

l?@Getter/@Setter:用在屬性上页慷,再也不用自己手寫setter和getter方法了憔足,還可以指定訪問范圍

l?@ToString:用在類上,可以自動(dòng)覆寫toString方法酒繁,當(dāng)然還可以加其他參數(shù)滓彰,例如@ToString(exclude=”id”)排除id屬性,或者@ToString(callSuper=true, includeFieldNames=true)調(diào)用父類的toString方法州袒,包含所有屬性

l?@EqualsAndHashCode:用在類上揭绑,自動(dòng)生成equals方法和hashCode方法

l?@NoArgsConstructor, @RequiredArgsConstructor and @AllArgsConstructor:用在類上,自動(dòng)生成無參構(gòu)造和使用所有參數(shù)的構(gòu)造函數(shù)以及把所有@NonNull屬性作為參數(shù)的構(gòu)造函數(shù),如果指定staticName = “of”參數(shù)他匪,同時(shí)還會(huì)生成一個(gè)返回類對象的靜態(tài)工廠方法菇存,比使用構(gòu)造函數(shù)方便很多

l?@Data:注解在類上,相當(dāng)于同時(shí)使用了@ToString邦蜜、@EqualsAndHashCode依鸥、@Getter、@Setter和@RequiredArgsConstrutor這些注解悼沈,對于POJO類十分有用

l?@Value:用在類上贱迟,是@Data的不可變形式,相當(dāng)于為屬性添加final聲明絮供,只提供getter方法衣吠,而不提供setter方法

l?@Builder:用在類、構(gòu)造器杯缺、方法上蒸播,為你提供復(fù)雜的builder APIs,讓你可以像如下方式一樣調(diào)用Person.builder().name("Adam Savage").city("San Francisco").job("Mythbusters").job("Unchained Reaction").build();更多說明參考Builder

l?@SneakyThrows:自動(dòng)拋受檢異常萍肆,而無需顯式在方法上使用throws語句

l?@Synchronized:用在方法上袍榆,將方法聲明為同步的,并自動(dòng)加鎖塘揣,而鎖對象是一個(gè)私有的屬性$lock或$LOCK包雀,而java中的synchronized關(guān)鍵字鎖對象是this,鎖在this或者自己的類對象上存在副作用亲铡,就是你不能阻止非受控代碼去鎖this或者類對象才写,這可能會(huì)導(dǎo)致競爭條件或者其它線程錯(cuò)誤

l?@Getter(lazy=true):可以替代經(jīng)典的Double Check Lock樣板代碼

l?@Log:根據(jù)不同的注解生成不同類型的log對象,但是實(shí)例名稱都是log奖蔓,有六種可選實(shí)現(xiàn)類

@CommonsLog?Creates log = org.apache.commons.logging.LogFactory.getLog(LogExample.class);

@Log?Creates log = java.util.logging.Logger.getLogger(LogExample.class.getName());

@Log4j?Creates log = org.apache.log4j.Logger.getLogger(LogExample.class);

@Log4j2?Creates log = org.apache.logging.log4j.LogManager.getLogger(LogExample.class);

@Slf4j?Creates log = org.slf4j.LoggerFactory.getLogger(LogExample.class);

@XSlf4j?Creates log = org.slf4j.ext.XLoggerFactory.getXLogger(LogExample.class);


五赞草,@Async異步執(zhí)行方法

EnableAsync注解的意思是可以異步執(zhí)行,就是開啟多線程的意思吆鹤〕恚可以標(biāo)注在方法、類上

第一步疑务,只需要在方法上加上@Async注解沾凄,實(shí)現(xiàn)異步任務(wù)



第二步,在主啟動(dòng)程序上開啟異步?@EnableAsync



第三步知允,構(gòu)造執(zhí)行控制器撒蟀,查看執(zhí)行效果

執(zhí)行結(jié)果

1,4,2,3

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市温鸽,隨后出現(xiàn)的幾起案子保屯,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,348評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件配椭,死亡現(xiàn)場離奇詭異虫溜,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)股缸,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,122評論 2 385
  • 文/潘曉璐 我一進(jìn)店門衡楞,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人敦姻,你說我怎么就攤上這事瘾境。” “怎么了镰惦?”我有些...
    開封第一講書人閱讀 156,936評論 0 347
  • 文/不壞的土叔 我叫張陵迷守,是天一觀的道長。 經(jīng)常有香客問我旺入,道長兑凿,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,427評論 1 283
  • 正文 為了忘掉前任茵瘾,我火速辦了婚禮礼华,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘拗秘。我一直安慰自己圣絮,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,467評論 6 385
  • 文/花漫 我一把揭開白布雕旨。 她就那樣靜靜地躺著扮匠,像睡著了一般。 火紅的嫁衣襯著肌膚如雪凡涩。 梳的紋絲不亂的頭發(fā)上棒搜,一...
    開封第一講書人閱讀 49,785評論 1 290
  • 那天,我揣著相機(jī)與錄音活箕,去河邊找鬼帮非。 笑死,一個(gè)胖子當(dāng)著我的面吹牛讹蘑,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播筑舅,決...
    沈念sama閱讀 38,931評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼座慰,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了翠拣?” 一聲冷哼從身側(cè)響起版仔,我...
    開封第一講書人閱讀 37,696評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后蛮粮,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體益缎,經(jīng)...
    沈念sama閱讀 44,141評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,483評論 2 327
  • 正文 我和宋清朗相戀三年然想,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了莺奔。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,625評論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡变泄,死狀恐怖令哟,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情妨蛹,我是刑警寧澤屏富,帶...
    沈念sama閱讀 34,291評論 4 329
  • 正文 年R本政府宣布,位于F島的核電站蛙卤,受9級特大地震影響狠半,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜颤难,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,892評論 3 312
  • 文/蒙蒙 一神年、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧乐严,春花似錦瘤袖、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,741評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至既琴,卻和暖如春占婉,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背甫恩。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評論 1 265
  • 我被黑心中介騙來泰國打工逆济, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人磺箕。 一個(gè)月前我還...
    沈念sama閱讀 46,324評論 2 360
  • 正文 我出身青樓奖慌,卻偏偏與公主長得像,于是被迫代替她去往敵國和親松靡。 傳聞我的和親對象是個(gè)殘疾皇子简僧,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,492評論 2 348