Springboot快速入門

Springboot快速入門

簡(jiǎn)介

在您第1次接觸和學(xué)習(xí)Spring框架的時(shí)候,是否因?yàn)槠浞彪s的配置而退卻了迂求?在你第n次使用Spring框架的時(shí)候,是否覺得一堆反復(fù)黏貼的配置有一些厭煩?那么您就不妨來(lái)試試使用Spring Boot來(lái)讓你更易上手界逛,更簡(jiǎn)單快捷地構(gòu)建Spring應(yīng)用李请!

Spring Boot讓我們的Spring應(yīng)用變的更輕量化瞧筛。比如:你可以僅僅依靠一個(gè)Java類來(lái)運(yùn)行一個(gè)Spring引用。你也可以打包你的應(yīng)用為jar并通過使用java -jar來(lái)運(yùn)行你的Spring Web應(yīng)用导盅。

Spring Boot的主要優(yōu)點(diǎn):

  • 為所有Spring開發(fā)者更快的入門
  • 開箱機(jī)用较幌,提供各種默認(rèn)配置來(lái)簡(jiǎn)化項(xiàng)目配置
  • 內(nèi)嵌式容器,簡(jiǎn)化web項(xiàng)目
  • 沒有冗余代碼生成和XML配置的要求

快速入門

本章主要目標(biāo)完成Spring Boot基礎(chǔ)項(xiàng)目的構(gòu)建白翻,并且實(shí)現(xiàn)一個(gè)簡(jiǎn)單的Http請(qǐng)求處理乍炉,通過這個(gè)例子對(duì)Spring Boot有一個(gè)初步的了解绢片,并體驗(yàn)其結(jié)構(gòu)簡(jiǎn)單、開發(fā)快速的特性岛琼。

系統(tǒng)要求

Java 7及以上
Spring Framework 4.1.5及以上
本文采用Java 1.8.0_73底循、Spring Boot 1.5.8調(diào)試通過。

使用Maven構(gòu)建項(xiàng)目

  • 1.通過SPRING INITIALIZR工具產(chǎn)生基礎(chǔ)項(xiàng)目
    • 1.訪問:http://start.spring.io/
    • 2.選擇構(gòu)建工具M(jìn)aven Project槐瑞、Spring Boot版本1.3.2以及一些工程基本信息熙涤,可參考下圖所示SPRING INITIALIZR
      SPRING INITIALIZR
    • 3.點(diǎn)擊Generate Project下載項(xiàng)目壓縮包
  • 2.解壓項(xiàng)目包,并用IDE以Maven項(xiàng)目導(dǎo)入困檩,以IntelliJ IDEA 14為例:
    • 1.菜單中選擇File–>New–>Project from Existing Sources...
    • 2.選擇解壓后的項(xiàng)目文件夾祠挫,點(diǎn)擊OK
    • 3.點(diǎn)擊Import project from external model并選擇Maven,點(diǎn)擊Next到底為止窗看。
    • 4.若你的環(huán)境有多個(gè)版本的JDK茸歧,注意到選擇Java SDK的時(shí)候請(qǐng)選擇Java 7以上的版本

項(xiàng)目結(jié)構(gòu)解析

[圖片上傳失敗...(image-e4796c-1510299088962)]

通過上面步驟完成了基礎(chǔ)項(xiàng)目的創(chuàng)建,如上圖所示显沈,SpringBoot的基礎(chǔ)結(jié)構(gòu)共三個(gè)文件(具體路徑根據(jù)用戶生成項(xiàng)目時(shí)填寫的Group所有差異):

  • src/main/java下的程序入口:SpringbootdemoApplication
  • src/main/resources下的配置文件:application.properties
  • src/test/下的測(cè)試入口:SpringbootdemoApplicationTests

生成的SpringbootdemoApplication和SpringbootdemoApplicationTests類都可以直接運(yùn)行來(lái)啟動(dòng)當(dāng)前創(chuàng)建的項(xiàng)目软瞎,由于目前該項(xiàng)目未配合任何數(shù)據(jù)訪問或Web模塊,程序會(huì)在加載完Spring之后結(jié)束運(yùn)行拉讯。

引入Web模塊

當(dāng)前的pom.xml內(nèi)容如下涤浇,僅引入了兩個(gè)模塊:

  • spring-boot-starter:核心模塊,包括自動(dòng)配置支持魔慷、日志和YAML
  • spring-boot-starter-test:測(cè)試模塊只锭,包括JUnit、Hamcrest院尔、Mockito
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

引入Web模塊Web模塊蜻展,需添加spring-boot-starter-web模塊:

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

編寫Hello服務(wù)

  • 創(chuàng)建HelloController類,內(nèi)容如下:
@RestController
public class HelloController {

    @RequestMapping("/hello")
    public String test(){
        return "hello springboot";
    }
}
  • 啟動(dòng)主程序邀摆,輸入部分日志如下:
      .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::        (v1.5.8.RELEASE)

2017-11-10 14:41:25.956  INFO 5186 --- [           main] c.z.s.d.s.SpringbootdemoApplication      : Starting SpringbootdemoApplication on zzydeMBP with PID 5186 (/Users/zzy/Documents/zzy/Idea_workspace/springboot_learn/springbootdemo/target/classes started by zzy in /Users/zzy/Documents/zzy/Idea_workspace/springboot_learn/springbootdemo1)
2017-11-10 14:41:25.961  INFO 5186 --- [           main] c.z.s.d.s.SpringbootdemoApplication      : No active profile set, falling back to default profiles: default
2017-11-10 14:41:26.028  INFO 5186 --- [           main] ationConfigEmbeddedWebApplicationContext : Refreshing org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@7ff2a664: startup date [Fri Nov 10 14:41:26 CST 2017]; root of context hierarchy
2017-11-10 14:41:27.138  INFO 5186 --- [           main] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat initialized with port(s): 8080 (http)
2017-11-10 14:41:27.149  INFO 5186 --- [           main] o.apache.catalina.core.StandardService   : Starting service [Tomcat]
2017-11-10 14:41:27.150  INFO 5186 --- [           main] org.apache.catalina.core.StandardEngine  : Starting Servlet Engine: Apache Tomcat/8.5.23
2017-11-10 14:41:27.230  INFO 5186 --- [ost-startStop-1] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring embedded WebApplicationContext
2017-11-10 14:41:27.230  INFO 5186 --- [ost-startStop-1] o.s.web.context.ContextLoader            : Root WebApplicationContext: initialization completed in 1206 ms
2017-11-10 14:41:27.314  INFO 5186 --- [ost-startStop-1] o.s.b.w.servlet.ServletRegistrationBean  : Mapping servlet: 'dispatcherServlet' to [/]
2017-11-10 14:41:27.317  INFO 5186 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean   : Mapping filter: 'characterEncodingFilter' to: [/*]
2017-11-10 14:41:27.317  INFO 5186 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean   : Mapping filter: 'hiddenHttpMethodFilter' to: [/*]
2017-11-10 14:41:27.318  INFO 5186 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean   : Mapping filter: 'httpPutFormContentFilter' to: [/*]
2017-11-10 14:41:27.318  INFO 5186 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean   : Mapping filter: 'requestContextFilter' to: [/*]
2017-11-10 14:41:27.564  INFO 5186 --- [           main] s.w.s.m.m.a.RequestMappingHandlerAdapter : Looking for @ControllerAdvice: org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@7ff2a664: startup date [Fri Nov 10 14:41:26 CST 2017]; root of context hierarchy
2017-11-10 14:41:27.602  INFO 5186 --- [           main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/hello]}" onto public java.lang.String com.zzy.springboot.demo.springbootdemo.controller.HelloController.test()
2017-11-10 14:41:27.605  INFO 5186 --- [           main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/error]}" onto public org.springframework.http.ResponseEntity<java.util.Map<java.lang.String, java.lang.Object>> org.springframework.boot.autoconfigure.web.BasicErrorController.error(javax.servlet.http.HttpServletRequest)
2017-11-10 14:41:27.605  INFO 5186 --- [           main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/error],produces=[text/html]}" onto public org.springframework.web.servlet.ModelAndView org.springframework.boot.autoconfigure.web.BasicErrorController.errorHtml(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse)
2017-11-10 14:41:27.622  INFO 5186 --- [           main] o.s.w.s.handler.SimpleUrlHandlerMapping  : Mapped URL path [/webjars/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]
2017-11-10 14:41:27.622  INFO 5186 --- [           main] o.s.w.s.handler.SimpleUrlHandlerMapping  : Mapped URL path [/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]
2017-11-10 14:41:27.642  INFO 5186 --- [           main] o.s.w.s.handler.SimpleUrlHandlerMapping  : Mapped URL path [/**/favicon.ico] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]
2017-11-10 14:41:27.729  INFO 5186 --- [           main] o.s.j.e.a.AnnotationMBeanExporter        : Registering beans for JMX exposure on startup
2017-11-10 14:41:27.775  INFO 5186 --- [           main] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat started on port(s): 8080 (http)
2017-11-10 14:41:27.781  INFO 5186 --- [           main] c.z.s.d.s.SpringbootdemoApplication      : Started SpringbootdemoApplication in 2.131 seconds (JVM running for 3.001)
2017-11-10 14:42:09.029  INFO 5186 --- [nio-8080-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring FrameworkServlet 'dispatcherServlet'
2017-11-10 14:42:09.029  INFO 5186 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet        : FrameworkServlet 'dispatcherServlet': initialization started
2017-11-10 14:42:09.045  INFO 5186 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet        : FrameworkServlet 'dispatcherServlet': initialization completed in 16 ms
  • 打開瀏覽器訪問http://localhost:8080/hello纵顾,可以看到頁(yè)面輸出hello springboot
    [圖片上傳失敗...(image-8c79ef-1510299088962)]
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市栋盹,隨后出現(xiàn)的幾起案子施逾,更是在濱河造成了極大的恐慌,老刑警劉巖例获,帶你破解...
    沈念sama閱讀 219,110評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件汉额,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡榨汤,警方通過查閱死者的電腦和手機(jī)蠕搜,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,443評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)件余,“玉大人讥脐,你說我怎么就攤上這事遭居。” “怎么了旬渠?”我有些...
    開封第一講書人閱讀 165,474評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵俱萍,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我告丢,道長(zhǎng)枪蘑,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,881評(píng)論 1 295
  • 正文 為了忘掉前任岖免,我火速辦了婚禮岳颇,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘颅湘。我一直安慰自己话侧,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,902評(píng)論 6 392
  • 文/花漫 我一把揭開白布闯参。 她就那樣靜靜地躺著瞻鹏,像睡著了一般。 火紅的嫁衣襯著肌膚如雪鹿寨。 梳的紋絲不亂的頭發(fā)上新博,一...
    開封第一講書人閱讀 51,698評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音脚草,去河邊找鬼赫悄。 笑死,一個(gè)胖子當(dāng)著我的面吹牛馏慨,可吹牛的內(nèi)容都是我干的埂淮。 我是一名探鬼主播,決...
    沈念sama閱讀 40,418評(píng)論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼写隶,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼同诫!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起樟澜,我...
    開封第一講書人閱讀 39,332評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎叮盘,沒想到半個(gè)月后秩贰,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,796評(píng)論 1 316
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡柔吼,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,968評(píng)論 3 337
  • 正文 我和宋清朗相戀三年毒费,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片愈魏。...
    茶點(diǎn)故事閱讀 40,110評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡觅玻,死狀恐怖想际,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情溪厘,我是刑警寧澤胡本,帶...
    沈念sama閱讀 35,792評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站畸悬,受9級(jí)特大地震影響侧甫,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜蹋宦,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,455評(píng)論 3 331
  • 文/蒙蒙 一披粟、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧冷冗,春花似錦守屉、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,003評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至须板,卻和暖如春碰镜,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背习瑰。 一陣腳步聲響...
    開封第一講書人閱讀 33,130評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工绪颖, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人甜奄。 一個(gè)月前我還...
    沈念sama閱讀 48,348評(píng)論 3 373
  • 正文 我出身青樓柠横,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親课兄。 傳聞我的和親對(duì)象是個(gè)殘疾皇子牍氛,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,047評(píng)論 2 355

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