javascript
SpringBoot学习系列之一
一、SpringBoot是什么
spring Boot可以基于Spring輕松創(chuàng)建可以“運行”的、獨立的、生產(chǎn)級的應(yīng)用程序。 對Spring平臺和第三方類庫我們有自己看法和意見(約定大于配置),所以你最開始的時候不要感到奇怪。大多數(shù)Spring Boot應(yīng)用程序需要很少的Spring配置。
您可以使用Spring Boot創(chuàng)建可以使用java -jar或傳統(tǒng) war 包部署啟動的Java應(yīng)用程序。 我們還提供一個運行“spring scripts”的命令行工具。
那我們舉個栗子:
假設(shè)你受命用Spring開發(fā)一個簡單的Hello World Web應(yīng)用程序。你該做什么?我能想到一些基本的需要。
1.一個項目結(jié)構(gòu),其中有一個包含必要依賴的Maven或者Gradle構(gòu)建文件,最起碼要有SpringMVC和Servlet API這些依賴。
2.?一個web.xml文件(或者一個 WebApplicationInitializer 實現(xiàn)),其中聲明了Spring的 DispatcherServlet 。
3.一個啟用了Spring MVC的Spring配置。
4.一個控制器類,以“Hello World”響應(yīng)HTTP請求。
5.一個用于部署應(yīng)用程序的Web應(yīng)用服務(wù)器,比如Tomcat。
最讓人難以接受的是,這份清單里只有一個東西是和Hello World功能相關(guān)的,即控制器,剩下的都是Spring開發(fā)的Web應(yīng)用程序必需的通用樣板。既然所有Spring Web應(yīng)用程序都要用到它們,那為什么還要你來提供這些東西呢?
而我們要用SpringBoot來寫一個HelloWorld的WEB應(yīng)用程序。我們需要做些什么呢。
1.?設(shè)置SpringBoot的Parent
?
2.?導入SpringBoot的Web支持
?
3.?在啟動類中寫一個HelloWorld的方法
?
4.然后在地址欄中輸入:localhost:8080/helloboot,就會出來我們想要的內(nèi)容。
其實我們用IDEA來開發(fā)的話,第一步第二步也不需要我們?nèi)プ?#xff0c;直接選擇SpringIntializr來進行開發(fā)就可以了。
?
所以你現(xiàn)在是不是明白SpringBoot是做什么的,和Spring有什么區(qū)別了呢。
二、SpringBoot的特點
????????1.自動配置:針對很多Spring應(yīng)用程序常見的應(yīng)用功能,Spring Boot能自動提供相關(guān)配置。Spring Boot實現(xiàn)了自動配置,這讓Spring能夠智能探測正在構(gòu)建何種應(yīng)用程序,自動配置必要的組件以滿足應(yīng)用程序的需要。對于那些常見的配置場景,不再需要顯式地編寫配置了,Spring會替你料理好一切。
????????2.起步依賴:告訴Spring Boot需要什么功能,它就能引入需要的庫。
????????3.命令行界面:這是Spring Boot的可選特性,借此你只需寫代碼就能完成完整的應(yīng)用程序,無需傳統(tǒng)項目構(gòu)建。
????????4.Actuator:讓你能夠深入運行中的Spring Boot應(yīng)用程序,一探究竟。
三、代碼解釋
????????1、Spring Boot父級依賴,有了這個,當前的項目就是Spring Boot項目了,spring-boot-starter-parent是一個特殊的starter,它用來提供相關(guān)的Maven默認依賴,使用它之后,常用的包依賴可以省去version標簽。
????????2、在pom.xml文件中,dependencies是父起步依賴。
Spring Boot通過提供眾多起步依賴降低項目依賴的復雜度。起步依賴本質(zhì)上是一個Maven項目對象模型(Project Object Model,POM),定義了對其他庫的傳遞依賴,這些東西加在一起即支持某項功能。很多起步依賴的命名都暗示了它們提供的某種或某類功能。
????????3、Spring Boot提供了很多”開箱即用“的依賴模塊,都是以spring-boot-starter-xx作為命名的。舉個例子來說明一下這個起步依賴的好處,比如組裝臺式機和品牌機,自己組裝的話需要自己去選擇不同的零件,最后還要組裝起來,期間有可能會遇到零件不匹配的問題。耗時又消力,而品牌機就好一點,買來就能直接用的,后續(xù)想換零件也是可以的。相比較之下,后者帶來的效果更好點(這里就不討論價格問題哈),起步依賴就像這里的品牌機,自動給你封裝好了你想要實現(xiàn)的功能的依賴。就比如我們之前要實現(xiàn)web功能,引入了spring-boot-starter-web這個起步依賴。
????4、@SpringBootApplication 開啟了Spring的組件掃描和Spring Boot的自動配置功能。實際上, @SpringBootApplication 將三個有用的注解組合在了一起。
????????Spring的 @Configuration :標明該類使用Spring基于Java的配置。
????????Spring的 @ComponentScan :啟用組件掃描,這樣你寫的Web控制器類和其他組件才能被自動發(fā)現(xiàn)并注冊為Spring應(yīng)用程序上下文里的Bean。
????????Spring Boot 的 @EnableAutoConfiguration :啟用 Spring 應(yīng)用程序上下文的自動配置,試圖猜測和配置您可能需要的bean。自動配置類通常采用基于你的 classpath 和已經(jīng)定義的 beans 對象進行應(yīng)用。
就是這一行配置開啟了Spring Boot自動配置的魔力,讓你不用再寫成篇的配置了。
????????5、@RestController注解相當于@ResponseBody + @Controller合在一起的作用。
????1)如果只是使用@RestController注解Controller,則Controller中的方法無法返回jsp頁面,配置的視圖解析器InternalResourceViewResolver則不起作用,返回的內(nèi)容就是Return 里的內(nèi)容(String/JSON)。
例如:本來應(yīng)該到success.jsp頁面的,則其顯示success.
????2)如果使用@RestController注解Controller,需要返回到指定頁面,則需要配置視圖解析器InternalResourceViewResolver,可以利用ModelAndView返回試圖。
????3)如果使用@Controller注解Controller,如果需要返回JSON,XML或自定義mediaType內(nèi)容到頁面,則需要在對應(yīng)的方法上加上@ResponseBody注解。
?
?
?
?
?
?
?
?
總結(jié)
以上是生活随笔為你收集整理的SpringBoot学习系列之一的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python数据结构编程_写给Pytho
- 下一篇: SpringCloud 入门教程(八):