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