<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      SpringBoot 2 要不要升級

      前言

      在談SpringBoot 2.x 之前,先來聊點別的:

      首先是Java 語言,這門長期占據編程語言排行榜首位的語言到底有什么魔力?
      大家的看法是多種多樣的,比如:

      • 面向對象設計,使用簡單,可以很快速的入門;
      • 開源生態做得好,很多可重用的組件,拿來即用;
      • 跨平臺,高性能,是做后臺開發的首選

      還有一種觀點很有意思:這是命好,每當人們覺得 Java 不行了的時候,總會有英雄橫刀救美..

      其中,主要說的是:

      ":最初 Java 開發出來不知道有什么用的時候,發現可以用 Applet 在網頁上做動畫。
      后來企業級軟件開發時代 JavaEE 大行其道,開源社區 Spring 桃李滿天下。
      等到了移動時代,人們覺得 Java 要完蛋了,Google 拍馬救市,收購并開放了 Android 平臺,當家語言就是 Java。
      于是 Java 再次煥發勃勃生機。 目前在大數據領域,Java 同樣是當仁不讓的好手。"

      原文出自這里,感興趣的朋友可以去讀一讀。

      "命好"的確沒錯,但這里想說的是開放性(開源)是非常關鍵的。
      由于Java的開放性,其開源生態衍生出了非常多的優秀框架,其中最有代表性的就是SpringFramework。
      隨著框架的受眾越來越多,該項目也在持續演進以滿足日益增長的能力需求,最終大家便越來越離不開它。
      到如今 SpringFramework 已經形成了一個龐大的生態圈,同時 Spring Web也已經成為Java開發的一種"事實標準"。

      如果希望了解Spring 框架的一些歷史,推薦讀一讀 是時候給大家介紹 Spring Boot/Cloud 背后豪華的研發團隊了 這篇文章。

      一、SpringBoot 簡史

      SpringBoot 的誕生不是沒有道理的,可能大家都清楚,Spring Framework定義了一個核心的概念叫IoC,即控制反轉。 這是什么意思?
      控制反轉,即對象的關系不再由對象本身決定,由容器來控制其依賴。簡單說,就是由容器來幫你初始化對象,并完成自動化的關聯。
      這樣,又有了依賴注入(Dependency Injection)的概念...總之,IoC 和 DI是 理解Spring框架的關鍵,后面所有出現的東西,都是從這兩個概念開始的。

      然后,因為要做自動化的對象初始化、關系裝配,需要有個東西來描述這些關系,一般是用xml文件來描述,比如applicationContext.xml 會描述一個ApplicationContext上下文里面所擁有的對象實例,以及這些實例之間的關系。 于是乎,所有的 Spring 應用程序都使用了這樣的配置方式。

      在 Web 開發方面,Spring Framework誕生了 Spring MVC,用來簡化 Servlet的開發。 通過AOP實現的路由轉換能力,可以快速的把URL映射到一個Bean方法去處理;通過內置常用的編解碼轉換器,可以避免每次都要寫格式轉換的代碼.. 這些能力,也讓 Spring MVC 稱為了Java Web開發框架的不二之選。

      但是發展到了后來,隨著 Web開發技術的逐步完善,一個框架集成的模塊越來越多,而單一Web應用的功能特性也越來越多了。 此時大家逐漸發現,基于 xml的方式去定義Bean加載,工作量其實很大,而且配置文件逐漸變得臃腫、不好維護,有時候配置出現錯誤,經常是要排查個半天。 于是乎都用了@Bean、@Autowired注解,還有@ComponentScan 來實現自動化掃描,這些特性大大簡化了開發工作。

      SpringBoot 是基于免配置的思路來設計的,也就是說讓你不用在配置上花太多時間,所有的東西盡可能都用內置的、現成的。
      于是乎,就有了各種各樣的 starter 子項目,嚴格說,這些 starter 只能算是膠水項目(幾乎沒有代碼),但是它們能讓你獲得許多開發上的愉悅體驗!
      下面的這些starter都具備不同的用途:

      • spring-boot-starter
         核心啟動器,包含了自動配置、日志和YAML。
      • spring-boot-starter-web
         引入全棧式Web開發組件,包括Tomcat和spring-webmvc
      • spring-boot-starter-thymeleaf
         引入Thymeleaf模板引擎,包括與Spring的集成。
      • spring-boot-starter-test
         引入常規的測試依賴,包括JUnit、Hamcrest、Mockito以及spring-test模塊。
      • spring-boot-starter-websocket
         引入WebSocket模塊
      • spring-boot-starter-redis
         引入Redis模塊
      • spring-boot-starter-security
         引入 spring-security安全模塊
      • spring-boot-starter-data-jpa
         引入數據存儲層JPA(Java Persistence API)
      • spring-boot-starter-data-mongodb
         引入MongoDB數據庫模塊
      • spring-boot-starter-amqp
         引入spring-rabbitmq客戶端來支持AMQP協議
      • spring-boot-starter-aop
         引入AOP的編程模塊,包括spring-aop和AspectJ
      • spring-boot-starter-mail
         引入javax.mail模塊
      • spring-boot-starter-log4j
         引入Log4J日志框架

      同時,這些模塊化項目是隨著SpringBoot版本一起演進的。
      2014年4月份,Spring Boot 剛發布了 1.0版本 便 迅速圈粉,接下來1.x 版本經歷了4年的演進;
      直到2018年3月份,Spring Boot 2.0版本發布,

      下面,是SpringBoot經歷過的一些版本:

      Spring boot 1.1(2014 年 6 月)
      改進的模板支持,gemfire 支持,elasticsearch 和 apache solr 的自動配置。

      Spring Boot 1.2(2015 年 3 月)
      升級到 servlet 3.1 / tomcat 8 / jetty 9,spring 4.1 升級,
      支持 banner / jms / SpringBootApplication 注解。

      Spring Boot 1.3(2016 年 12 月)
      升級到 Spring 4.2 ,新的 spring-boot-devtools,
      緩存模塊實現自動化配置(ehcache,hazelcast,redis 和 infinispan)
      支持完全可執行的 jar 支持。

      Spring Boot 1.4(2017年1月)
      spring 4.3 升級,支持 couchbase/neo4j,分析啟動失敗和RestTemplateBuilder。

      Spring Boot 1.5(2017年2月)
      支持 kafka / ldap,第三方庫升級,棄用 crash 支持和執行器記錄器端點以動態修改應用程序日志級別。

      Spring Boot 2.0(2018 年 03 月)
      基于 Java 8,支持 Java 9,支持 Quartz ,調度程序大大簡化了安全自動配置,支持嵌入式 Netty。

      Spring Boot 2.1(2018 年 10 月)
      支持 Java 11,升級Spring 5.1,應用性能提升,度量模塊做了改進。

      其中 Spring Boot 2.0跨度較大,醞釀期也達到1年之多,整個 底層的SpringCore 核心都做了較大的升級(基于Spring 5.0)。
      隨著 SpringBoot 2.1的發布,2.2即將面世,整個2.0 版本也會趨于穩定。

      其中,對于大多數人比較關心的,是Spring Boot 2都有哪些更新,要不要做升級?


      圖-Spring之父 Rod Johnson

      二、SpringBoot 2 的變化

      下面列舉了Spring Boot 2.0這個重要版本的一些更新:

      1.配置的變更

      在 2.x 中廢除了一些 1.x 中的配置,并增加了許多新配置,詳細請查看以下鏈接中的變更表格。
      https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-2.0-Configuration-Changelog

      此外,關于配置的綁定方式也有些變化:

      在 1.x 中,配置綁定是通過注解 @ConfigurationProperties 來注入到 Spring 環境變量中的。
      在 2.x 中,配置綁定功能有了些的改造,在調整了 1.x 中許多不一致地方之外,還提供了獨立于注解之外的 API 來裝配配置屬性。
      并增加了屬性來源,這樣你就能知道這些屬性是從哪個配置文件中加載進來的。

      2.JDK 版本升級

      2.x 至少需要 JDK 8 的支持,2.x 里面的許多方法應用了 JDK 8 的許多高級新特性,所以升級到 2.0 版本必須先確認你的應用必須兼容 JDK 8。
      另外是 2.x 開始了對 JDK 9 的支持。

      3.第三方類庫升級

      2.x 對第三方類庫升級了所有能升級的穩定版本,一些值得關注的類庫:

      1) Spring Framework 5+
      2) Tomcat 8.5+
      3) Flyway 5+
      4) Hibernate 5.2+
      5) Thymeleaf 3+

      4.響應式編程支持

      2.x 通過啟動器和自動配置全面支持 Spring 的響應式編程,響應式編程是完全異步和非阻塞的,它是基于事件驅動模型,而不是傳統的線程模型。
      就連 Spring Boot 內部也對一些功能點進行了有必要的響應式升級,最值得注意的是對內嵌式容器的支持。

      對響應式編程支持又包括以下幾個技術模塊。

      1. Spring WebFlux & WebFlux.fn 支持
      2. 響應式 Spring Data 支持
      3. 響應式 Spring Security 支持
      4. 內嵌式的 Netty 服務器支持

      5.Data 支持

      上面有說到對響應式 Spring Data 的支持,除此之外,其他 Data 模塊也做了許多更新和提升,具體體現在以下幾個地方。

      1. 2.x 默認使用 HikariCP 連接池;
      2. 更加合理化的優化了數據庫初始化邏輯;
      3. spring.jdbc.template 自動配置現在可以通過 spring.jdbc.template 屬性定制;
      4. 提供了新配置 spring.jdbc.template 方便分頁和排序;
      5. 對數據庫 spring.jdbc.template 自動化配置支持;
      6. 可以高級定制 MongoDB 客戶端;
      7. 可以通過 spring.cache.redis.* 來配置 Redis 緩存默認值。

      6.Web加強

      除了上面說了 2.x 對響應式框架的支持,還包括以下幾個 web 開發改進。

      1. 使用內嵌式容器時,context path 會和端口一起記錄并打印出來;
      2. 所有支持的容器都支持過濾器的初始化;
      3. Thymeleaf 開始支持 javax.time 類型;
      4. 提供了一個 spring-boot-starter-json 啟動器對 JSON 讀寫的支持。

      7.HTTP/2 支持

      提供對HTTP/2 的支持,如:Tomcat, Undertow, Jetty,這個得依賴具體選擇的應用服務器和應用環境。

      8.其他增強

      出了前面的一些變化,還包括以下的一些增強:
      Actuator加強
      在 2.x 中,對執行器端點進行了許多改進,所有的 HTTP 執行端點現在都暴露在 /actuator路徑下,并對 JSON 結果集也做了改善。

      Gradle 插件
      Spring Boot的 Gradle 插件全面重寫了,并且最小支持 Gradle 4+ 以便提供一些重要的特性提升。

      Kotlin
      2.x 開始提供對 Kotlin 1.2 的支持,并且提供了一個 runApplication 函數來運行 Spring Boot 應用。

      Quartz支持
      2.x 提供了一個 spring-boot-starter-quartz 啟動器對定時任務框架 Quartz 的支持。

      測試支持
      在 2.x 中,對測試模塊有了一些調整,如自動化的配置增強。

      在這里,可以看到更詳細的的版本特性。

      三、要不要升級

      Spring Boot 2.0 發布至今已經將近一年了,目前來看應該是比較穩定的,而市面上也出現不少基于 SpringBoot 2.0的教程書籍,在這個時間點開始使用是沒有問題的。

      A. 如果所在的團隊較小,或是對于新的項目,建議可以直接上手;
      B. 對于規模較大,或是已經上線一段時間的項目,則需要考慮如下問題:

      • 當前的Spring Boot版本是否存在重大的缺陷?
      • 切換過程產生的人力成本是否可以接受?
      • 團隊中對于新版本的掌握程度如何?

      對于后者,我更多建議持保守態度,Spring Boot 1.x 盡管目前已經停止更新,但其經歷了4年多的迭代完善,目前是使用面最廣且最為穩定的。

      如果確實想進行升級,也建議先做好的分析及測試,也可以看看SpringBoot 2.0遷移指南

      作為初學者來看,使用 Spring Boot 1.x 還是 2.x 的區別并不大,相比較之下,當下在使用 1.x過程中遇到的一些問題會更容易找到答案。
      或許,你可以從下面這篇文章開始學習 Spring Boot。

      springboot項目基礎搭建課

      歡迎繼續關注"美碼師的補習系列-springboot篇" ,期待更多精彩內容-

      posted @ 2019-03-08 21:21  美碼師  閱讀(7138)  評論(2)    收藏  舉報
      主站蜘蛛池模板: 久热这里只有精品12| 欧美福利电影A在线播放| 女人高潮流白浆视频| 日本熟妇乱一区二区三区| 377P欧洲日本亚洲大胆| 欧美成年黄网站色视频| 亚洲人成在线观看网站不卡| 一区二区不卡99精品日韩| 97在线视频人妻无码| 国产一区二区三区精品片| 拜城县| 在线国产极品尤物你懂的| 久久午夜无码免费| 日本道高清一区二区三区| 国产成人8X人网站视频| 99热国产这里只有精品9| 九九热精品在线视频观看| 97久久久亚洲综合久久| 成人无码区在线观看| 会同县| 国产成人av电影在线观看第一页| 国精品91人妻无码一区二区三区| 久久精品国产精品亚洲| 国产精品中文字幕日韩| 蜜芽久久人人超碰爱香蕉| 超碰成人精品一区二区三| 亚洲人成电影网站色mp4| 亚洲一区二区三区啪啪| 中字幕人妻一区二区三区| 国产女人18毛片水真多1| 无码丰满人妻熟妇区| 石狮市| 无码日韩精品一区二区三区免费| 国产精品黄色片| 中文字幕日韩一区二区不卡| 国产性三级高清在线观看| 国产综合视频一区二区三区| 国产人妻熟女呻吟在线观看| 日韩精品无码一区二区视频| 国产综合有码无码中文字幕 | 亚洲国产美女精品久久久|