SpringBoot 入門:環境搭建與HelloWorld~
嗯,今日遇貴人。貴人跟我說現在做web的不但要會mysql 啊 SpringMVC啊之類的了,這些都老了。雖不算過時卻不是最前沿了。互聯網最前沿的必備技術是Spring Boot + MongoDB(非關系型數據庫)。于是我就暫且拋下我的雛鷹開發,來了解下這個所謂最前沿是什么。畢竟我是個這么愛學習的孩子是吧~好,開搞!
今日目標:SpringBoot 框架搭建,跑一個HelloWorld出來。
首先了解什么是SpringBoot,他跟Spring、SpringMVC有什么區別和聯系呢。在此引用網友大神@Cbdy 的一段話(原文戳這里):
大概說一下:
Spring 是一個“引擎”
Spring MVC 是基于 Spring 的一個 MVC 框架
Spring Boot 是基于 Spring4 的條件注冊的一套快速開發整合包Spring 最初利用“工廠模式”( DI )和“代理模式”( AOP )解耦應用組件。大家覺得挺好用,于是按照這種模式搞了一個 MVC 框架(一些用 Spring 解耦的組件),用開發 web 應用( SpringMVC )。然后有發現每次開發都要搞很多依賴,寫很多樣板代碼很麻煩,于是搞了一些懶人整合包( starter ),這套就是 Spring Boot
說白了呢,就是方便碼農、程序猿快速開發web應用的這么一個框架,具體怎么加速的,這里引用網友大神@import_java_any的話(原文戳這里):
先從Spring講起。很多做過Java項目的人估計都知道,項目中存在著很多很復雜的依賴關系,如果對這些依賴關系不加以管理的話,隨著Bug的修復,新需求的加入,以及項目的發展,項目會變得越來越維護,尤其是有新同事來負責維護項目的話,新同事很難快速的理解項目的結構以及其中的依賴關系。于是Spring便應運而生,Spring框架可以理解為是一套良好的代碼框架與設計模式的集合,通過使用Spring框架,項目內部的依賴關系可以與項目代碼解耦,并保存在配置文件(組)中,這使得代碼變得簡單明了,依賴關系也變得簡單明了并易于配置,從而大大降低了項目的維護難度。
那么Spring Boot又是做什么的呢?Spring框架固然有其好處,但是隨著項目規模的擴大,配置文件(組)會變得相當龐大,項目中新增或者修改一個功能時,幾乎都要從這么龐大的配置文件(組)中去建立或修改相應的配置,這其中的工作量是可想而知的,并且,配置文件(組)的維護此時也變得復雜了。于是Spring Boot便應運而生了。Spring Boot可以看作是利用了與程序員之間的一些“約定”,即當程序員遵循這些約定的時候,Spring Boot便會給出基于這些“約定”的默認的配置,從而減少了程序員在維護配置文件(組)上的工作量。這也是最近很流行的“約定優于配置”(Convention Over Configuration) 思想的體現。
也就是說,SpringBoot簡化了很多程序員繁瑣的配置工作,大大提高了開發效率。如此看來,這個SpringBoot還真的是不錯。那話不多說,趕緊搞一下看看有多快。
開發環境:win10+IntelliJ IDEA
步驟一:使用SPRING INITIALIZR創建項目,截圖如下:
過程中,勾選web,截圖如下:
完成后,項目結構截圖如下:
看到了有個java類,我就點進去看了一下,發現竟然有main函數:
package com.simon;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
哇塞,好神奇,難道可以直接運行嗎。我就手賤的run了以下,結果發現,還真的可以跑,日志截圖如下,還蠻好玩的:
發現了沒有,最上面的是一個Spring,有意思的碼農~而且我還發現了一些不正常的地方,圖中標注出來了,這是什么,tomcat初始化?還有攔截器?難道,我可以直接通過網頁訪問了嗎?然后我就去嘗試了一下,發現竟然真的真的跑起來了,不過沒有結果罷了:
于是我就準備給他加點東西。
步驟二:
新建類:HelloWorldController.java:
package com.simon.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
/**
* @Author Simon
* @Date 2017/5/8 23:54
*/
@Controller
@RequestMapping(value = "hello")
public class HelloWorldController {
@RequestMapping(value = "world")
@ResponseBody
public String hello(){
return "Hello World";
}
}
此時重新運行項目,結果得出:
此時發現,我寫的代碼跟我所參考的教程代碼不太一致,教程代碼是:
@RestController
public class HelloController {
@RequestMapping("/hello")
public String index(){
return "Hello World";
}
}
由于習慣,我直接用了@Controller+@ResponseBody,這個@RestController引起了我的注意,原來沒注意過,而運行結果是一致的,百度了一下,官方文檔如下(原文戳這里):
@RestController is a stereotype annotation that combines @ResponseBody and @Controller.
意思就是@RestController相當于@ResponseBody + @Controller合在一起。不過單純的@RestController注解的話,Controller中的方法無法返回jsp頁面,配置的視圖解析器InternalResourceViewResolver不起作用,返回的內容就是Return 里的內容。所以還是@Controller好用。
問題:為何直接跑Java main 函數,就可以直接運行項目
解答:因為Spring Boot 中自帶Tomcat,所以不需要額外配置Tomcat,直接跑main函數相當于啟動Tomcat進程,為發布提供很大便利。
總結:今日隨手寫了個小demo,卻比之前搭建SpringMVC時耗時減少了不少,不說配置Tomcat的時間,單單配置Spring的參數就占用了搭建框架大部分的時間,而SpringBoot都給你自動配置好,這點大大提高了開發效率,實現了敏捷開發。很棒。
明日目標:加入MongoDB支持。寫一個簡單的查詢。
智能推薦
SpringBoot入門-HelloWorld詳解
什么是SpringBoot 簡而言之,它就是一個簡化新Spring應用的初始搭建以及開發過程的框架。 第一個項目-HelloWorld 大多數人第一個項目都是HelloWorld,springboot也不例外,從helloworld最基礎開始了解開始。 1、創建項目 本次項目使用的是idea 點擊spring Initializr,在project SDK,選好自己的java版本,正常都配好了,直...
SpringBoot入門-helloworld(一)
一、springboot簡介 SpringBoot是由Pivotal團隊在2013年開始研發、2014年4月發布第一個版本的全新開源的輕量級框架。它基于Spring4.0設計,不僅繼承了Spring框架原有的優秀特性,而且還通過簡化配置來進一步簡化了Spring應用的整個搭建和開發過程。另外SpringBoot通過集成大量的框架使得依賴包的版本沖突,以及引用的不穩定性等問題得到了很好的解決。 二、...
springboot入門helloworld
1.創建一個maven的jar工程,過程略 2.添加繼承和依賴 繼承的是spring-boot-starter-parent 依賴的是spring-boot-starter-web 3.創建類啟動boot并暴露一個測試的url 4.直接運行Hello可以看到效果,去瀏覽器測試...
SpringBoot入門-HelloWorld
SpringBoot-HelloWorld 1. 為什么要用SpringBoot 相信用過SSM框架的小伙伴都知道,在使用過程中我們必須配置大量的.xml文件來整合各個框架并對其參數進行配置,這項工作對于大型項目來說苦不堪言。 于是Pivotal 團隊提供了全新的框架Spring Boot,其設計目的是用來簡化新 Spring 應用的初始搭建以及開發過程。該框架采用“習慣優于配置&rd...
SpringBoot入門-2(HelloWorld)
寫在前面的話 系列教程都是從網絡上收集和本人的理解所編輯而成,僅供廣大愛好者學習所用,請尊重本人的勞動成果。歡迎評論指正和轉帖!(請保留連接謝謝!) 一、創建項目 實際上創建一個Maven項目即可,不用那么麻將去找springboot項目。 二、項目結構 三、POM.XML 四、HelloController.java 五、App.java...
猜你喜歡
springboot入門--helloworld
本文章會重點描述springboot第一個程序helloworld、springboot利用外置tomcat啟動 一、Spring Boot簡介 對于初學springmvc的人來說,想要入手就開發需要拷貝一連串的dependency而不知道這個是干嘛,不知道是不是少了依賴。像我剛接觸springmvc的時候到處百度教程而發現各有不同,于是復制了一個又一個代碼卻不能自己設置,根本原因是不了解各個依賴...
freemarker + ItextRender 根據模板生成PDF文件
1. 制作模板 2. 獲取模板,并將所獲取的數據加載生成html文件 2. 生成PDF文件 其中由兩個地方需要注意,都是關于獲取文件路徑的問題,由于項目部署的時候是打包成jar包形式,所以在開發過程中時直接安照傳統的獲取方法沒有一點文件,但是當打包后部署,總是出錯。于是參考網上文章,先將文件讀出來到項目的臨時目錄下,然后再按正常方式加載該臨時文件; 還有一個問題至今沒有解決,就是關于生成PDF文件...
電腦空間不夠了?教你一個小秒招快速清理 Docker 占用的磁盤空間!
Docker 很占用空間,每當我們運行容器、拉取鏡像、部署應用、構建自己的鏡像時,我們的磁盤空間會被大量占用。 如果你也被這個問題所困擾,咱們就一起看一下 Docker 是如何使用磁盤空間的,以及如何回收。 docker 占用的空間可以通過下面的命令查看: TYPE 列出了docker 使用磁盤的 4 種類型: Images:所有鏡像占用的空間,包括拉取下來的鏡像,和本地構建的。 Con...
requests實現全自動PPT模板
http://www.1ppt.com/moban/ 可以免費的下載PPT模板,當然如果要人工一個個下,還是挺麻煩的,我們可以利用requests輕松下載 訪問這個主頁,我們可以看到下面的樣式 點每一個PPT模板的圖片,我們可以進入到詳細的信息頁面,翻到下面,我們可以看到對應的下載地址 點擊這個下載的按鈕,我們便可以下載對應的PPT壓縮包 那我們就開始做吧 首先,查看網頁的源代碼,我們可以看到每一...