日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

Spring Boot 2.X 来临,本文将带你起飞

發(fā)布時間:2023/12/3 javascript 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Spring Boot 2.X 来临,本文将带你起飞 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

轉(zhuǎn)載自? ?Spring Boot 2.X 來臨,本文將帶你起飛

當前互聯(lián)網(wǎng)技術(shù)盛行,以Spring 框架為主導的Java 互聯(lián)網(wǎng)技術(shù)成了主流,而基于Spring 技術(shù)衍生出來的Spring Boot,采用了“約定優(yōu)于配置”的思想,極大地簡化了Spring 框架的開發(fā)。

隨著近些年來微服務(wù)技術(shù)的流行,Spring Boot 也成了時下炙手可熱的熱點技術(shù)。2017 年9 月,Spring 框架出現(xiàn)了重大版本升級,從4.x 版本升級為了5.x 版本,隨著這次升級,Spring Boot的版本也在2018年3月從1.x升級到了2.x。

Spring Boot的優(yōu)點

談到Spring Boot,就讓我們先來了解它的優(yōu)點。依據(jù)官方的文檔,Spring Boot的優(yōu)點如下:

  • 創(chuàng)建獨立的Spring應(yīng)用程序;

  • 嵌入的Tomcat、Jetty或者Undertow,無須部署WAR文件;

  • 允許通過Maven來根據(jù)需要獲取starter;

  • 盡可能地自動配置Spring;

  • 提供生產(chǎn)就緒型功能,如指標、健康檢查和外部配置;

  • 絕對沒有代碼生成,對XML沒有要求配置。

這段描述告訴我們,首先Spring Boot是一個基于Spring框架搭建起來的應(yīng)用,其次它會嵌入Tomcat、Jetty或者Undertow等服務(wù)器,并且不需要傳統(tǒng)的WAR文件進行部署,也就是說搭建Spring Boot項目并不需要單獨下載Tomcat等傳統(tǒng)的服務(wù)器。

同時提供通過Maven(或者Grandle)依賴的starter,這些starter可以直接獲取開發(fā)所需的相關(guān)包,通過這些starter項目就能以Java Application的形式運行Spring Boot的項目,而無須其他服務(wù)器配置。

對于配置,Spring Boot提供Spring框架的最大自動化配置,大量使用自動配置,使得開發(fā)者對Spring的配置盡量減少。

此外還提供了一些監(jiān)測、自動檢測的功能和外部配置,與此同時沒有附加代碼和XML的配置要求。

約定優(yōu)于配置,這是Spring Boot的主導思想。對于Spring Boot而言,大部分情況下存在默認配置,你甚至可以在沒有任何定義的情況下使用Spring框架,如果需要自定義也只需要在配置文件配置一些屬性便可以,十分便捷。

而對于部署這些項目必需的功能,Spring Boot提供starter的依賴,例如,spring-boot-starter-web捆綁了Spring MVC所依賴的包,spring-boot-starter-tomcat綁定了內(nèi)嵌的Tomcat,這樣使得開發(fā)者能夠盡可能快地搭建開發(fā)環(huán)境,快速進行開發(fā)和部署,這就是Spring Boot的特色。也許作為傳統(tǒng)開發(fā)者的你,還未能理解其意義,但這并不要緊。

為了展示Spring Boot的特色,下節(jié)將分別展示傳統(tǒng)Spring MVC項目和簡易的Spring Boot入門實例,并進行比較。

傳統(tǒng)Spring MVC和Spring Boot的對比

在傳統(tǒng)的Spring MVC項目開發(fā)中,開發(fā)一個簡易的Spring MVC項目,需要配置DispatcherServlet,也需要配置Spring IoC的容器。你可以選擇使用web.xml的配置來實現(xiàn),當然,如果你使用的是Servlet 3.1規(guī)范,也可以繼承由Spring MVC提供的AbstractAnnotationConfigDispatcherServletInitializer來配置Spring MVC項目。

這里先給出可以運行的代碼示例,即使你還不熟悉Spring MVC也沒有關(guān)系,這里只是為了說明開發(fā)比較煩瑣而已,后面將詳談Spring MVC的開發(fā)原理。

假設(shè)你已經(jīng)導入需要的Spring和Spring MVC相關(guān)的依賴包到工程中,那么就可以開始配置DispatcherServlet了。例如,代碼清單1-1就是通過繼承AbstractAnnotationConfigDispatcherServletInitializer的方式來配置Spring MVC的DispatcherServlet的。

代碼清單1-1 配置Spring MVC

package?com.springboot.springmvc.conf;import? org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer; public?class?MyWebAppInitializer? ?extends?AbstractAnnotationConfigDispatcherServletInitializer?{??//?Spring?IoC容器配置??@Override??protected?Class<?>[]?getRootConfigClasses()?{??//?可以返回Spring的Java配置文件數(shù)組??return?new?Class<?>[]?{};??}??//?DispatcherServlet的URI映射關(guān)系配置??@Override??protected?Class<?>[]?getServletConfigClasses()?{??//?可以返回Spring的Java配置文件數(shù)組??return?new?Class<?>[]?{?WebConfig.class?};??}??//?DispatcherServlet攔截請求匹配??@Override??protected?String[]?getServletMappings()?{??return?new?String[]?{?"*.do"?};??}?? }??

注意代碼中加粗的地方。這里引入了一個Java配置文件—— WebConfig.java,它的主要作用是配置Spring MVC的核心類DispatcherServlet的上下文,如代碼清單1-2所示。

?

代碼清單1-2 配置DispatcherServlet的上下文

package?com.springboot.springmvc.conf; import?java.util.ArrayList; import?java.util.List; import?org.springframework.context.annotation.Bean; import?org.springframework.context.annotation.ComponentScan; import?org.springframework.context.annotation.ComponentScan.Filter; import?org.springframework.context.annotation.Configuration; import?org.springframework.context.annotation.FilterType; import?org.springframework.http.MediaType; import?org.springframework.http.converter.json.MappingJackson2HttpMessageConverter; import?org.springframework.stereotype.Controller; import?org.springframework.web.servlet.HandlerAdapter; import?org.springframework.web.servlet.ViewResolver; import?org.springframework.web.servlet.config.annotation.EnableWebMvc; import?org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter; import?org.springframework.web.servlet.view.InternalResourceViewResolver;@Configuration //?定義Spring?MVC掃描的包 @ComponentScan(value="com.*",? includeFilters?=?{@Filter(type?=?FilterType.ANNOTATION,value?=?Controller.class)}) //?啟動Spring?MVC配置 @EnableWebMvc public?class?WebConfig?{/****?通過注解@Bean初始化視圖解析器*?*?@return?ViewResolver視圖解析器*/@Bean(name?=?"internalResourceViewResolver")public?ViewResolver?initViewResolver()?{InternalResourceViewResolver?viewResolver?=?new?InternalResourceViewResolver();viewResolver.setPrefix("/WEB-INF/jsp/");viewResolver.setSuffix(".jsp");return?viewResolver;}/***?初始化RequestMappingHandlerAdapter,并加載HTTP的JSON轉(zhuǎn)換器*?*?@return?RequestMappingHandlerAdapter?對象*/@Bean(name?=?"requestMappingHandlerAdapter")public?HandlerAdapter?initRequestMappingHandlerAdapter()?{//?創(chuàng)建RequestMappingHandlerAdapter適配器RequestMappingHandlerAdapter?rmhd?=?new?RequestMappingHandlerAdapter();//?HTTP?JSON轉(zhuǎn)換器MappingJackson2HttpMessageConverter?jsonConverter?=?new?MappingJackson2HttpMessageConverter();//?MappingJackson2HttpMessageConverter接收JSON類型消息的轉(zhuǎn)換mediaType?=?MediaType.APPLICATION_JSON_UTF8;List<MediaType>?mediaTypes?=?new?ArrayList<MediaType>();mediaTypes.add(mediaType);//?加入轉(zhuǎn)換器的支持類型jsonConverter.setSupportedMediaTypes(mediaTypes);//?給適配器加入JSON轉(zhuǎn)換器rmhd.getMessageConverters().add(jsonConverter);return?rmhd;} }

通過上面的代碼,配置完成Spring MVC的開發(fā)環(huán)境后,才可以開發(fā)Spring MVC控制器Controller,這樣就可以開發(fā)一個簡單的控制器(Controller),如代碼清單1-3所示。

代碼清單1-3 開發(fā)Spring MVC控制器

package?com.springboot.springmvc.controller;import?java.util.HashMap; import?java.util.Map; import?org.springframework.stereotype.Controller; import?org.springframework.web.bind.annotation.RequestMapping; import?org.springframework.web.bind.annotation.ResponseBody;@Controller public?class?TestController?{@RequestMapping("/test")@ResponseBodypublic?Map<String,?String>?test()?{Map<String,?String>?map?=?new?HashMap<String,?String>();map.put("key",?"value");return?map;} }

這樣就完成了一個傳統(tǒng)Spring MVC的開發(fā),但是你還需要第三方服務(wù)器,如Tomcat、WebLogic等服務(wù)器去部署你的工程。在啟動服務(wù)器后,再打開瀏覽器,輸入對應(yīng)的URL,如項目名稱為SpringMVC則輸入http://localhost:8080/SpringMVC/test.do,就可以得到圖1-1所示的頁面。

?

?圖1-1 測試傳統(tǒng)的Spring MVC項目

從上面來看,傳統(tǒng)的Spring MVC開發(fā)需要配置的內(nèi)容還是比較多的,而且對設(shè)計人員要求較高。開發(fā)完成后,開發(fā)者還需要找到對應(yīng)的服務(wù)器去運行,如Tomcat或者Jetty等,這樣既要進行開發(fā),又要進行配置和部署,工作量還是不少的。

而使用Spring Boot開發(fā)后,你就會發(fā)現(xiàn)原來一切可以那么簡單。不過在入門階段暫時不需要討論太多的細節(jié)問題,這是未來需要討論的問題,所以這里只展示它是如何簡單而已。首先我們在IDE中創(chuàng)建一個Maven工程,并把其名稱定義為Chapter1,這樣就可以看到一個Maven配置文件pom.xml,將其內(nèi)容修改為如代碼清單1-4所示。

代碼清單1-4 配置Spring Boot依賴環(huán)境

<project?xmlns="http://maven.apache.org/POM/4.0.0"? xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0? http://maven.apache.org/maven-v4_0_0.xsd"><modelVersion>4.0.0</modelVersion><groupId>springboot</groupId><artifactId>chapter1</artifactId><packaging>war</packaging><version>0.0.1-SNAPSHOT</version><name>chapter1?Maven?Webapp</name><url>http://maven.apache.org</url><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.0.0.RELEASE</version></parent><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><java.version>1.8</java.version></properties><dependencies><!--?Spring?Boot?Starter依賴引入?--><!--?AOP包?--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-aop</artifactId></dependency><!--?Web開發(fā)包,將載入Spring?MVC所需要的包,且內(nèi)嵌tomcat?--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!--加載測試依賴包?--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies><!--?引入插件?--><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build> </project>

從加粗的代碼中可以看到Maven的配置文件引入了多個Spring Boot的starter,Spring Boot會根據(jù)Maven配置的starter去尋找對應(yīng)的依賴,將對應(yīng)的jar包加載到工程中,而且它還會把綁定的服務(wù)器也加載到工程中,這些都不需要你再進行處理。

正如Spring Boot承諾的那樣,綁定服務(wù)器,并且實現(xiàn)Spring的盡可能的配置,采用約定優(yōu)于配置的原則。這里我們只需要開發(fā)一個類就可以運行Spring Boot的應(yīng)用了,為此新建類——Chapter1Main,如代碼清單1-5所示。

代碼清單1-5 開發(fā)Spring Boot應(yīng)用

package?com.springboot.chapter1;import?java.util.HashMap; import?java.util.Map;import?org.springframework.boot.SpringApplication; import?org.springframework.boot.autoconfigure.EnableAutoConfiguration; import?org.springframework.stereotype.Controller; import?org.springframework.web.bind.annotation.RequestMapping; import?org.springframework.web.bind.annotation.ResponseBody;@Controller //?啟用Spring?Boot自動裝配 @EnableAutoConfiguration public?class?Chapter1Main?{@RequestMapping("/test")@ResponseBodypublic?Map<String,?String>?test()?{Map<String,?String>?map?=?new?HashMap<String,?String>();map.put("key",?"value");return?map;}public?static?void?main(String[]?args)?throws?Exception?{SpringApplication.run(Chapter1Main.class,?args);} }

好了,這個入門實例已經(jīng)完結(jié)了。如果你沒有接觸過Spring Boot那么你會十分驚訝,這樣就配置完成Spring MVC的內(nèi)容了嗎?我可以回答你:“是的,已經(jīng)完成了,現(xiàn)在完全可以使用Java Application的形式去運行類Chapter1Main。”下面是Spring Boot的運行日志:

1?.???____??????????_????????????__?_?_
2?/\\?/?___'_?__?_?_(_)_?__??__?_?\?\?\?\
3(?(?)\___?|?'_?|?'_|?|?'_?\/?_`?|?\?\?\?\
4?\\/??___)|?|_)|?|?|?|?|?||?(_|?|??)?)?)?)
5??'??|____|?.__|_|?|_|_|?|_\__,?|?/?/?/?/
6?=========|_|==============|___/=/_/_/_/
7?::?Spring?Boot?::????????(v2.0.0.RELEASE)
8
92018-03-01?22:21:55.843??INFO?16324?---?[???????????main]?
10com.springboot.chapter1.Chapter1Main?????:?
11Starting?Chapter1Main?on?AFOIF-703271542?with?PID?16324?
12(G:\springboot\v2\chapter1\target\classes?started?by?Administrator?in?
13G:\springboot\v2\chapter1)
14......
152018-03-01?22:21:57.270??INFO?16324?---?[???????????main]?
16s.w.s.m.m.a.RequestMappingHandlerMapping?:?
17Mapped?"{[/test]}"?onto?public?java.util.Map<java.lang.String,?java.lang.String>?
18com.springboot.chapter1.Chapter1Main.test()
19......
202018-03-01?22:21:57.270??INFO?16324?---?[???????????main]?
21com.springboot.chapter1.Chapter1Main?:?Started?Chapter1Main?in?1.845?seconds?(JVM?running?for?2.143)
22

從日志中可以看到,Tomcat已經(jīng)啟動,并且將我們開發(fā)的Chapter1Main作為Spring MVC的控制器加載進來了,也將對應(yīng)的路徑(/test)映射到開發(fā)的test方法上。因此,接下來就可以進行測試了。打開瀏覽器,在地址欄輸入http://localhost:8080/test,可以看到如圖1-2所示的結(jié)果。

?

圖1-2Spring Boot運行結(jié)果

與傳統(tǒng)的Spring MVC是不是很不一樣呢?從上面的對比可以看出,Spring Boot 允許直接進行開發(fā),這就是它的優(yōu)勢。在傳統(tǒng)所需要配置的地方,Spring Boot都進行了約定,也就是你可以直接以Spring Boot約定的方式進行開發(fā)和運行你的項目。

當你需要修改配置的時候,它也提供了一些快速配置的約定,猶如它所承諾的那樣,盡可能地配置好Spring項目和綁定對應(yīng)的服務(wù)器,使得開發(fā)人員的配置更少,更加直接地開發(fā)項目。

對于那些微服務(wù)而言,更喜歡的就是這樣能夠快速搭建環(huán)境的項目,而Spring Boot提供了這種可能性,同時Spring Boot還提供了監(jiān)控的功能。

隨著云技術(shù)的到來,微服務(wù)成了市場的熱點,于是代表Java微服務(wù)時代的Spring Boot微服務(wù)開發(fā)的時代已經(jīng)到來,結(jié)合Spring Cloud后它還能很方便地構(gòu)建分布式系統(tǒng)開發(fā),滿足大部分無能力單獨開發(fā)分布式架構(gòu)的企業(yè)所需,所以這無疑是激動人心的技術(shù)。

總結(jié)

以上是生活随笔為你收集整理的Spring Boot 2.X 来临,本文将带你起飞的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。