From feee85415a37ce2668626c00b308159fb51d3dd5 Mon Sep 17 00:00:00 2001 From: lb <15521386476@163.com> Date: Mon, 25 Mar 2024 17:56:37 +0800 Subject: [PATCH] =?UTF-8?q?Update=20SpringBoot=E7=9A=84=E5=89=8D=E4=B8=96?= =?UTF-8?q?=E4=BB=8A=E7=94=9F.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...15\344\270\226\344\273\212\347\224\237.md" | 196 +++++++++--------- 1 file changed, 98 insertions(+), 98 deletions(-) diff --git "a/docs/Spring\345\205\250\345\256\266\346\241\266/SpringBoot/SpringBoot\347\232\204\345\211\215\344\270\226\344\273\212\347\224\237.md" "b/docs/Spring\345\205\250\345\256\266\346\241\266/SpringBoot/SpringBoot\347\232\204\345\211\215\344\270\226\344\273\212\347\224\237.md" index c524bd5..b0a489d 100644 --- "a/docs/Spring\345\205\250\345\256\266\346\241\266/SpringBoot/SpringBoot\347\232\204\345\211\215\344\270\226\344\273\212\347\224\237.md" +++ "b/docs/Spring\345\205\250\345\256\266\346\241\266/SpringBoot/SpringBoot\347\232\204\345\211\215\344\270\226\344\273\212\347\224\237.md" @@ -1,65 +1,65 @@ -# SpringBoot的前世今生 +# SpringBoot鐨勫墠涓栦粖鐢 -Spring Boot 2.0 的推出又激起了一阵学习 Spring Boot 热,就单从我个人的博客的访问量大幅增加就可以感受到大家对学习 Spring Boot 的热情,那么在这么多人热衷于学习 Spring Boot 之时,我自己也在思考: Spring Boot 诞生的背景是什么?Spring 企业又是基于什么样的考虑创建 Spring Boot? 传统企业使用 Spring Boot 会给我们带来什么样变革? +Spring Boot 2.0 鐨勬帹鍑哄張婵璧蜂簡涓闃靛涔 Spring Boot 鐑紝灏卞崟浠庢垜涓汉鐨勫崥瀹㈢殑璁块棶閲忓ぇ骞呭鍔犲氨鍙互鎰熷彈鍒板ぇ瀹跺瀛︿範 Spring Boot 鐨勭儹鎯咃紝閭d箞鍦ㄨ繖涔堝浜虹儹琛蜂簬瀛︿範 Spring Boot 涔嬫椂锛屾垜鑷繁涔熷湪鎬濊冿細 Spring Boot 璇炵敓鐨勮儗鏅槸浠涔堬紵Spring 浼佷笟鍙堟槸鍩轰簬浠涔堟牱鐨勮冭檻鍒涘缓 Spring Boot? 浼犵粺浼佷笟浣跨敤 Spring Boot 浼氱粰鎴戜滑甯︽潵浠涔堟牱鍙橀潻? -带着这些问题,我们一起来了解下 Spring Boot 到底是什么? +甯︾潃杩欎簺闂锛屾垜浠竴璧锋潵浜嗚В涓 Spring Boot 鍒板簳鏄粈涔? -## Spring 历史 +## Spring 鍘嗗彶 -说起 Spring Boot 我们不得不先了解一下 Spring 这个企业,不仅因为 Spring Boot 来源于 Spirng 大家族,而且 Spring Boot 的诞生和 Sping 框架的发展息息相关。 +璇磋捣 Spring Boot 鎴戜滑涓嶅緱涓嶅厛浜嗚В涓涓 Spring 杩欎釜浼佷笟锛屼笉浠呭洜涓 Spring Boot 鏉ユ簮浜 Spirng 澶у鏃忥紝鑰屼笖 Spring Boot 鐨勮癁鐢熷拰 Sping 妗嗘灦鐨勫彂灞曟伅鎭浉鍏炽 -时间回到2002年,当时正是 Java EE 和 EJB 大行其道的时候,很多知名公司都是采用此技术方案进行项目开发。这时候有一个美国的小伙子认为 EJB 太过臃肿,并不是所有的项目都需要使用 EJB 这种大型框架,应该会有一种更好的方案来解决这个问题。 +鏃堕棿鍥炲埌2002骞达紝褰撴椂姝f槸 Java EE 鍜 EJB 澶ц鍏堕亾鐨勬椂鍊欙紝寰堝鐭ュ悕鍏徃閮芥槸閲囩敤姝ゆ妧鏈柟妗堣繘琛岄」鐩紑鍙戙傝繖鏃跺欐湁涓涓編鍥界殑灏忎紮瀛愯涓 EJB 澶繃鑷冭偪锛屽苟涓嶆槸鎵鏈夌殑椤圭洰閮介渶瑕佷娇鐢 EJB 杩欑澶у瀷妗嗘灦锛屽簲璇ヤ細鏈変竴绉嶆洿濂界殑鏂规鏉ヨВ鍐宠繖涓棶棰樸 -为了证明他的想法是正确的,于2002年10月甚至写了一本书《 Expert One-on-One J2EE 》,介绍了当时 Java 企业应用程序开发的情况,并指出了 Java EE 和 EJB 组件框架中存在的一些主要缺陷。在这本书中,他提出了一个基于普通 Java 类和依赖注入的更简单的解决方案。 +涓轰簡璇佹槑浠栫殑鎯虫硶鏄纭殑锛屼簬2002骞10鏈堢敋鑷冲啓浜嗕竴鏈功銆 Expert One-on-One J2EE 銆嬶紝浠嬬粛浜嗗綋鏃 Java 浼佷笟搴旂敤绋嬪簭寮鍙戠殑鎯呭喌锛屽苟鎸囧嚭浜 Java EE 鍜 EJB 缁勪欢妗嗘灦涓瓨鍦ㄧ殑涓浜涗富瑕佺己闄枫傚湪杩欐湰涔︿腑锛屼粬鎻愬嚭浜嗕竴涓熀浜庢櫘閫 Java 绫诲拰渚濊禆娉ㄥ叆鐨勬洿绠鍗曠殑瑙e喅鏂规銆 -在书中,他展示了如何在不使用 EJB 的情况下构建高质量,可扩展的在线座位预留系统。为了构建应用程序,他编写了超过 30,000 行的基础结构代码,项目中的根包命名为 com.interface21,所以人们最初称这套开源框架为 interface21,也就是 Spring 的前身。 +鍦ㄤ功涓紝浠栧睍绀轰簡濡備綍鍦ㄤ笉浣跨敤 EJB 鐨勬儏鍐典笅鏋勫缓楂樿川閲忥紝鍙墿灞曠殑鍦ㄧ嚎搴т綅棰勭暀绯荤粺銆備负浜嗘瀯寤哄簲鐢ㄧ▼搴忥紝浠栫紪鍐欎簡瓒呰繃 30,000 琛岀殑鍩虹缁撴瀯浠g爜锛岄」鐩腑鐨勬牴鍖呭懡鍚嶄负 com.interface21锛屾墍浠ヤ汉浠渶鍒濈О杩欏寮婧愭鏋朵负 interface21锛屼篃灏辨槸 Spring 鐨勫墠韬 -他是谁呢,他就是大名鼎鼎的 Rod Johnson (下图), Rod Johnson 在悉尼大学不仅获得了计算机学位,同时还获得了音乐学位,更令人吃惊的是在回到软件开发领域之前,他还获得了音乐学的博士学位。现在 Rod Johnson 已经离开了 Spring ,成为了一个天使投资人,同时也是多个公司的董事,早已走上人生巅峰。 +浠栨槸璋佸憿锛屼粬灏辨槸澶у悕榧庨紟鐨 Rod Johnson 锛堜笅鍥撅級, Rod Johnson 鍦ㄦ倝灏煎ぇ瀛︿笉浠呰幏寰椾簡璁$畻鏈哄浣嶏紝鍚屾椂杩樿幏寰椾簡闊充箰瀛︿綅锛屾洿浠や汉鍚冩儕鐨勬槸鍦ㄥ洖鍒拌蒋浠跺紑鍙戦鍩熶箣鍓嶏紝浠栬繕鑾峰緱浜嗛煶涔愬鐨勫崥澹浣嶃傜幇鍦 Rod Johnson 宸茬粡绂诲紑浜 Spring 锛屾垚涓轰簡涓涓ぉ浣挎姇璧勪汉锛屽悓鏃朵篃鏄涓叕鍙哥殑钁d簨锛屾棭宸茶蛋涓婁汉鐢熷穮宄般 ![](https://java-tutorial.oss-cn-shanghai.aliyuncs.com/springboot-hot.png) -在这本书发布后,一对一的 J2EE 设计和开发一炮而红。这本书免费提供的大部分基础架构代码都是高度可重用的。 2003 年 Rod Johnson 和同伴在此框架的基础上开发了一个全新的框架命名为 Spring ,据 Rod Johnson 介绍 Spring 是传统 J2EE 新的开始。随后 Spring 发展进入快车道。 +鍦ㄨ繖鏈功鍙戝竷鍚庯紝涓瀵逛竴鐨 J2EE 璁捐鍜屽紑鍙戜竴鐐岀孩銆傝繖鏈功鍏嶈垂鎻愪緵鐨勫ぇ閮ㄥ垎鍩虹鏋舵瀯浠g爜閮芥槸楂樺害鍙噸鐢ㄧ殑銆 2003 骞 Rod Johnson 鍜屽悓浼村湪姝ゆ鏋剁殑鍩虹涓婂紑鍙戜簡涓涓叏鏂扮殑妗嗘灦鍛藉悕涓 Spring ,鎹 Rod Johnson 浠嬬粛 Spring 鏄紶缁 J2EE 鏂扮殑寮濮嬨傞殢鍚 Spring 鍙戝睍杩涘叆蹇溅閬撱 -* 2004 年 03 月,1.0 版发布。 -* 2006 年 10 月,2.0 版发布。 -* 2007 年 11 月更名为 SpringSource,同时发布了 Spring 2.5。 -* 2009 年 12 月,Spring 3.0 发布。 -* 2013 年 12 月,Pivotal 宣布发布 Spring 框架 4.0。 -* 2017 年 09 月,Spring 5.0 发布。 +* 2004 骞 03 鏈堬紝1.0 鐗堝彂甯冦 +* 2006 骞 10 鏈堬紝2.0 鐗堝彂甯冦 +* 2007 骞 11 鏈堟洿鍚嶄负 SpringSource锛屽悓鏃跺彂甯冧簡 Spring 2.5銆 +* 2009 骞 12 鏈堬紝Spring 3.0 鍙戝竷銆 +* 2013 骞 12 鏈堬紝Pivotal 瀹e竷鍙戝竷 Spring 妗嗘灦 4.0銆 +* 2017 骞 09 鏈堬紝Spring 5.0 鍙戝竷銆 -## Spring Boot 的诞生 +## Spring Boot 鐨勮癁鐢 -随着使用 Spring 进行开发的个人和企业越来越多,Spring 也慢慢从一个单一简洁的小框架变成一个大而全的开源软件,Spring 的边界不断的进行扩充,到了后来 Spring 几乎可以做任何事情了,市面上主流的开源软件、中间件都有 Spring 对应组件支持,人们在享用 Spring 的这种便利之后,也遇到了一些问题。 +闅忕潃浣跨敤 Spring 杩涜寮鍙戠殑涓汉鍜屼紒涓氳秺鏉ヨ秺澶氾紝Spring 涔熸參鎱粠涓涓崟涓绠娲佺殑灏忔鏋跺彉鎴愪竴涓ぇ鑰屽叏鐨勫紑婧愯蒋浠讹紝Spring 鐨勮竟鐣屼笉鏂殑杩涜鎵╁厖锛屽埌浜嗗悗鏉 Spring 鍑犱箮鍙互鍋氫换浣曚簨鎯呬簡锛屽競闈笂涓绘祦鐨勫紑婧愯蒋浠躲佷腑闂翠欢閮芥湁 Spring 瀵瑰簲缁勪欢鏀寔锛屼汉浠湪浜敤 Spring 鐨勮繖绉嶄究鍒╀箣鍚庯紝涔熼亣鍒颁簡涓浜涢棶棰樸 -Spring 每集成一个开源软件,就需要增加一些基础配置,慢慢的随着人们开发的项目越来越庞大,往往需要集成很多开源软件,因此后期使用 Spirng 开发大型项目需要引入很多配置文件,太多的配置非常难以理解,并容易配置出错,到了后来人们甚至称 Spring 为配置地狱。 +Spring 姣忛泦鎴愪竴涓紑婧愯蒋浠讹紝灏遍渶瑕佸鍔犱竴浜涘熀纭閰嶇疆锛屾參鎱㈢殑闅忕潃浜轰滑寮鍙戠殑椤圭洰瓒婃潵瓒婂簽澶э紝寰寰闇瑕侀泦鎴愬緢澶氬紑婧愯蒋浠讹紝鍥犳鍚庢湡浣跨敤 Spirng 寮鍙戝ぇ鍨嬮」鐩渶瑕佸紩鍏ュ緢澶氶厤缃枃浠讹紝澶鐨勯厤缃潪甯搁毦浠ョ悊瑙o紝骞跺鏄撻厤缃嚭閿欙紝鍒颁簡鍚庢潵浜轰滑鐢氳嚦绉 Spring 涓洪厤缃湴鐙便 -Spring 似乎也意识到了这些问题,急需有这么一套软件可以解决这些问题,这个时候微服务的概念也慢慢兴起,快速开发微小独立的应用变得更为急迫,Spring 刚好处在这么一个交叉点上,于 2013 年初开始的 Spring Boot 项目的研发,2014年4月,Spring Boot 1.0.0 发布。 +Spring 浼间箮涔熸剰璇嗗埌浜嗚繖浜涢棶棰橈紝鎬ラ渶鏈夎繖涔堜竴濂楄蒋浠跺彲浠ヨВ鍐宠繖浜涢棶棰橈紝杩欎釜鏃跺欏井鏈嶅姟鐨勬蹇典篃鎱㈡參鍏磋捣锛屽揩閫熷紑鍙戝井灏忕嫭绔嬬殑搴旂敤鍙樺緱鏇翠负鎬ヨ揩锛孲pring 鍒氬ソ澶勫湪杩欎箞涓涓氦鍙夌偣涓婏紝浜 2013 骞村垵寮濮嬬殑 Spring Boot 椤圭洰鐨勭爺鍙戯紝2014骞4鏈堬紝Spring Boot 1.0.0 鍙戝竷銆 -Spring Boot 诞生之初,就受到开源社区的持续关注,陆续有一些个人和企业尝试着使用了 Spring Boot,并迅速喜欢上了这款开源软件。直到2016年,在国内 Spring Boot 才被正真使用了起来,期间很多研究 Spring Boot 的开发者在网上写了大量关于 Spring Boot 的文章,同时有一些公司在企业内部进行了小规模的使用,并将使用经验分享了出来。从2016年到2018年,使用 Spring Boot 的企业和个人开发者越来越多,我们从 Spring Boot 关键字的百度指数就可以看出。 +Spring Boot 璇炵敓涔嬪垵锛屽氨鍙楀埌寮婧愮ぞ鍖虹殑鎸佺画鍏虫敞锛岄檰缁湁涓浜涗釜浜哄拰浼佷笟灏濊瘯鐫浣跨敤浜 Spring Boot锛屽苟杩呴熷枩娆笂浜嗚繖娆惧紑婧愯蒋浠躲傜洿鍒2016骞达紝鍦ㄥ浗鍐 Spring Boot 鎵嶈姝g湡浣跨敤浜嗚捣鏉ワ紝鏈熼棿寰堝鐮旂┒ Spring Boot 鐨勫紑鍙戣呭湪缃戜笂鍐欎簡澶ч噺鍏充簬 Spring Boot 鐨勬枃绔狅紝鍚屾椂鏈変竴浜涘叕鍙稿湪浼佷笟鍐呴儴杩涜浜嗗皬瑙勬ā鐨勪娇鐢紝骞跺皢浣跨敤缁忛獙鍒嗕韩浜嗗嚭鏉ャ備粠2016骞村埌2018骞达紝浣跨敤 Spring Boot 鐨勪紒涓氬拰涓汉寮鍙戣呰秺鏉ヨ秺澶氾紝鎴戜滑浠 Spring Boot 鍏抽敭瀛楃殑鐧惧害鎸囨暟灏卞彲浠ョ湅鍑恒 ![](https://java-tutorial.oss-cn-shanghai.aliyuncs.com/springboot-hot.png) -上图为2014年到2018年 Spring Boot 的百度指数,可以看出 Spring Boot 2.0 的推出引发了搜索高峰。 +涓婂浘涓2014骞村埌2018骞 Spring Boot 鐨勭櫨搴︽寚鏁帮紝鍙互鐪嬪嚭 Spring Boot 2.0 鐨勬帹鍑哄紩鍙戜簡鎼滅储楂樺嘲銆 -当然 Spring Boot 不是为了取代 Spring ,Spring Boot 基于 Spring 开发,是为了让人们更容易的使用 Spring。看到 Spring Boot 的市场反应,Spring 官方也非常重视 Spring Boot 的后续发展,已经将 Spring Boot 作为公司最顶级的项目来推广,放到了官网上第一的位置,因此后续 Spring Boot 的持续发展也被看好。 +褰撶劧 Spring Boot 涓嶆槸涓轰簡鍙栦唬 Spring ,Spring Boot 鍩轰簬 Spring 寮鍙戯紝鏄负浜嗚浜轰滑鏇村鏄撶殑浣跨敤 Spring銆傜湅鍒 Spring Boot 鐨勫競鍦哄弽搴旓紝Spring 瀹樻柟涔熼潪甯搁噸瑙 Spring Boot 鐨勫悗缁彂灞曪紝宸茬粡灏 Spring Boot 浣滀负鍏徃鏈椤剁骇鐨勯」鐩潵鎺ㄥ箍锛屾斁鍒颁簡瀹樼綉涓婄涓鐨勪綅缃紝鍥犳鍚庣画 Spring Boot 鐨勬寔缁彂灞曚篃琚湅濂姐 -# 基本介绍 +# 鍩烘湰浠嬬粛 ![](https://java-tutorial.oss-cn-shanghai.aliyuncs.com/20230415111020.png) -这是spring官网对于springboot的基本介绍 +杩欐槸spring瀹樼綉瀵逛簬springboot鐨勫熀鏈粙缁 Spring Boot makes it easy to create stand-alone, production-grade Spring based Applications that you can "just run". We take an opinionated view of the Spring platform and third-party libraries so you can get started with minimum fuss. Most Spring Boot applications need minimal Spring configuration. -简而言之,就是在告诉我们,springboot可以帮助我们快速构建独立部署的生产级应用 +绠鑰岃█涔嬶紝灏辨槸鍦ㄥ憡璇夋垜浠紝springboot鍙互甯姪鎴戜滑蹇熸瀯寤虹嫭绔嬮儴缃茬殑鐢熶骇绾у簲鐢 -,只需要一个带有@SpringBootApplication 注解的应用入口,即可被识别为一个springboot应用 +锛屽彧闇瑕佷竴涓甫鏈堾SpringBootApplication 娉ㄨВ鐨勫簲鐢ㄥ叆鍙o紝鍗冲彲琚瘑鍒负涓涓猻pringboot搴旂敤 -并且,springboot继承了大量的第三方库,我们仅需很少甚至是完全不需要额外的配置,就可以进行应用搭建,因为springboot框架本身已经帮我们设置好了大量的默认配置。 +骞朵笖锛宻pringboot缁ф壙浜嗗ぇ閲忕殑绗笁鏂瑰簱锛屾垜浠粎闇寰堝皯鐢氳嚦鏄畬鍏ㄤ笉闇瑕侀澶栫殑閰嶇疆锛屽氨鍙互杩涜搴旂敤鎼缓锛屽洜涓簊pringboot妗嗘灦鏈韩宸茬粡甯垜浠缃ソ浜嗗ぇ閲忕殑榛樿閰嶇疆銆 -# 基本特性 +# 鍩烘湰鐗规 Features @@ -70,139 +70,139 @@ Features * Provide production-ready features such as metrics, health checks, and externalized configuration * Absolutely no code generation and no requirement for XML configuration -官方对于springboot几大特性的描述如上 +瀹樻柟瀵逛簬springboot鍑犲ぇ鐗规х殑鎻忚堪濡備笂 -1、创建一个独立部署的spring应用,它常用于定义微服务,或者是一个web应用 +1銆佸垱寤轰竴涓嫭绔嬮儴缃茬殑spring搴旂敤锛屽畠甯哥敤浜庡畾涔夊井鏈嶅姟锛屾垨鑰呮槸涓涓獁eb搴旂敤 -2、内置的tomcat容器,我们再也需要把spring应用打包成war包,而是只需要将其打包成jar包进行部署即可。 +2銆佸唴缃殑tomcat瀹瑰櫒锛屾垜浠啀涔熶笉闇瑕佹妸spring搴旂敤鎵撳寘鎴恮ar鍖咃紝鑰屾槸鍙渶瑕佸皢鍏舵墦鍖呮垚jar鍖呰繘琛岄儴缃插嵆鍙 -3、提供starter依赖,更加简化了springboot生态中的依赖和配置,例如当我们使用springweb相关依赖时,我们不需要单独地添加多个springmvc相关的maven依赖,而是直接引用spring-boot-starter-web就可以了,这个starter会自动引入相关的依赖,并且帮你管理版本号,会大量地简化和优化你的maven配置 +3銆佹彁渚泂tarter渚濊禆锛屾洿鍔犵畝鍖栦簡springboot鐢熸佷腑鐨勪緷璧栧拰閰嶇疆锛屼緥濡傚綋鎴戜滑浣跨敤springweb鐩稿叧渚濊禆鏃讹紝鎴戜滑涓嶉渶瑕佸崟鐙湴娣诲姞澶氫釜springmvc鐩稿叧鐨刴aven渚濊禆锛岃屾槸鐩存帴寮曠敤spring-boot-starter-web灏卞彲浠ヤ簡锛岃繖涓猻tarter浼氳嚜鍔ㄥ紩鍏ョ浉鍏崇殑渚濊禆锛屽苟涓斿府浣犵鐞嗙増鏈彿锛屼細澶ч噺鍦扮畝鍖栧拰浼樺寲浣犵殑maven閰嶇疆 -4、自动装配spring和第三方库,这里主要是指通过注解和配置文件进行自动装配,并且还有一些是基于约定的自动装配机制,这可以帮我们节省大量的额外配置,也可以自动装配外部jar包提供的spring相关bean和配置。 +4銆佽嚜鍔ㄨ閰峴pring鍜岀涓夋柟搴擄紝杩欓噷涓昏鏄寚閫氳繃娉ㄨВ鍜岄厤缃枃浠惰繘琛岃嚜鍔ㄨ閰嶏紝骞朵笖杩樻湁涓浜涙槸鍩轰簬绾﹀畾鐨勮嚜鍔ㄨ閰嶆満鍒讹紝杩欏彲浠ュ府鎴戜滑鑺傜渷澶ч噺鐨勯澶栭厤缃紝涔熷彲浠ヨ嚜鍔ㄨ閰嶅閮╦ar鍖呮彁渚涚殑spring鐩稿叧bean鍜岄厤缃 -5、提供了生产环境相关的特性,比如监控、指标打点、健康检查等功能,springboot提供了强大的生态组件,这里不仅包括springboot自己的组件,也包括一些外部的生态组件。 +5銆佹彁渚涗簡鐢熶骇鐜鐩稿叧鐨勭壒鎬э紝姣斿鐩戞帶銆佹寚鏍囨墦鐐广佸仴搴锋鏌ョ瓑鍔熻兘锛宻pringboot鎻愪緵浜嗗己澶х殑鐢熸佺粍浠讹紝杩欓噷涓嶄粎鍖呮嫭springboot鑷繁鐨勭粍浠讹紝涔熷寘鎷竴浜涘閮ㄧ殑鐢熸佺粍浠躲 -6、不不存在代码生成,也不需要xml配置文件,这证明了springboot的框架完整度,以及对于配置简化的极致追求,我们仅需要application.properties进行基本配置参数管理,你也不会在springboot编译器找到动态生成的多余class文件。 +6銆佷笉涓嶅瓨鍦ㄤ唬鐮佺敓鎴愶紝涔熶笉闇瑕亁ml閰嶇疆鏂囦欢锛岃繖璇佹槑浜唖pringboot鐨勬鏋跺畬鏁村害锛屼互鍙婂浜庨厤缃畝鍖栫殑鏋佽嚧杩芥眰锛屾垜浠粎闇瑕乤pplication.properties杩涜鍩烘湰閰嶇疆鍙傛暟绠$悊锛屼綘涔熶笉浼氬湪springboot缂栬瘧鍣ㄦ壘鍒板姩鎬佺敓鎴愮殑澶氫綑class鏂囦欢銆 -# 和Spring的关系 +# 鍜孲pring鐨勫叧绯 ![](https://java-tutorial.oss-cn-shanghai.aliyuncs.com/20230415111139.png) -## SpringFramework解决了什么问题? +## SpringFramework瑙e喅浜嗕粈涔堥棶棰橈紵 -Spring是Java企业版(Java Enterprise Edition,JEE,也称J2EE)的轻量级代替品。无需开发重量级的EnterpriseJavaBean(EJB),Spring为企业级Java开发提供了一种相对简单的方法,通过依赖注入和面向切面编程,用简单的Java对象(Plain Old Java Object,POJO)实现了EJB的功能。 +Spring鏄疛ava浼佷笟鐗堬紙Java Enterprise Edition锛孞EE锛屼篃绉癑2EE锛夌殑杞婚噺绾т唬鏇垮搧銆傛棤闇寮鍙戦噸閲忕骇鐨凟nterpriseJavaBean锛圗JB锛夛紝Spring涓轰紒涓氱骇Java寮鍙戞彁渚涗簡涓绉嶇浉瀵圭畝鍗曠殑鏂规硶锛岄氳繃渚濊禆娉ㄥ叆鍜岄潰鍚戝垏闈㈢紪绋嬶紝鐢ㄧ畝鍗曠殑Java瀵硅薄锛圥lain Old Java Object锛孭OJO锛夊疄鐜颁簡EJB鐨勫姛鑳姐 -1.使用Spring的IOC容器,将对象之间的依赖关系交给Spring,降低组件之间的耦合性,让我们更专注于应用逻辑 +1.浣跨敤Spring鐨処OC瀹瑰櫒,灏嗗璞′箣闂寸殑渚濊禆鍏崇郴浜ょ粰Spring,闄嶄綆缁勪欢涔嬮棿鐨勮﹀悎鎬,璁╂垜浠洿涓撴敞浜庡簲鐢ㄩ昏緫 -2.可以提供众多服务,事务管理,WS等。 +2.鍙互鎻愪緵浼楀鏈嶅姟,浜嬪姟绠$悊,WS绛夈 -3.很好地支持AOP,方便面向切面编程。 +3.寰堝ソ鍦版敮鎸丄OP,鏂逛究闈㈠悜鍒囬潰缂栫▼銆 -4.对主流的框架提供了很好的集成支持,如Hibernate,Struts2,JPA等 +4.瀵逛富娴佺殑妗嗘灦鎻愪緵浜嗗緢濂界殑闆嗘垚鏀寔,濡侶ibernate,Struts2,JPA绛 -5.Spring DI机制降低了业务对象替换的复杂性。 +5.Spring DI鏈哄埗闄嶄綆浜嗕笟鍔″璞℃浛鎹㈢殑澶嶆潅鎬с -6.Spring属于低侵入,代码污染极低。 +6.Spring灞炰簬浣庝镜鍏,浠g爜姹℃煋鏋佷綆銆 -7.Spring的高度可开放性,并不强制依赖于Spring,开发者可以自由选择Spring部分或全部 +7.Spring鐨勯珮搴﹀彲寮鏀炬,骞朵笉寮哄埗渚濊禆浜嶴pring,寮鍙戣呭彲浠ヨ嚜鐢遍夋嫨Spring閮ㄥ垎鎴栧叏閮 -## SpringFramework没有解决了什么问题? +## SpringFramework娌℃湁瑙e喅浜嗕粈涔堥棶棰橈紵 -虽然Spring的组件代码是轻量级的,但它的配置却是重量级的。一开始,Spring用XML配置,而且是很多XML配置。Spring 2.5引入了基于注解的组件扫描,这消除了大量针对应用程序自身组件的显式XML配置。Spring 3.0引入了基于Java的配置,这是一种类型安全的可重构配置方式,可以代替XML。 +铏界劧Spring鐨勭粍浠朵唬鐮佹槸杞婚噺绾х殑锛屼絾瀹冪殑閰嶇疆鍗存槸閲嶉噺绾х殑銆備竴寮濮嬶紝Spring鐢╔ML閰嶇疆锛岃屼笖鏄緢澶歑ML閰嶇疆銆係pring 2.5寮曞叆浜嗗熀浜庢敞瑙g殑缁勪欢鎵弿锛岃繖娑堥櫎浜嗗ぇ閲忛拡瀵瑰簲鐢ㄧ▼搴忚嚜韬粍浠剁殑鏄惧紡XML閰嶇疆銆係pring 3.0寮曞叆浜嗗熀浜嶫ava鐨勯厤缃紝杩欐槸涓绉嶇被鍨嬪畨鍏ㄧ殑鍙噸鏋勯厤缃柟寮忥紝鍙互浠f浛XML銆 -所有这些配置都代表了开发时的损耗。因为在思考Spring特性配置和解决业务问题之间需要进行思维切换,所以编写配置挤占了编写应用程序逻辑的时间。和所有框架一样,Spring实用,但与此同时它要求的回报也不少。 +鎵鏈夎繖浜涢厤缃兘浠h〃浜嗗紑鍙戞椂鐨勬崯鑰椼傚洜涓哄湪鎬濊僑pring鐗规ч厤缃拰瑙e喅涓氬姟闂涔嬮棿闇瑕佽繘琛屾濈淮鍒囨崲锛屾墍浠ョ紪鍐欓厤缃尋鍗犱簡缂栧啓搴旂敤绋嬪簭閫昏緫鐨勬椂闂淬傚拰鎵鏈夋鏋朵竴鏍凤紝Spring瀹炵敤锛屼絾涓庢鍚屾椂瀹冭姹傜殑鍥炴姤涔熶笉灏戙 -除此之外,项目的依赖管理也是一件耗时耗力的事情。在环境搭建时,需要分析要导入哪些库的坐标,而且还需要分析导入与之有依赖关系的其他库的坐标,一旦选错了依赖的版本,随之而来的不兼容问题就会严重阻碍项目的开发进度。 +闄ゆ涔嬪锛岄」鐩殑渚濊禆绠$悊涔熸槸涓浠惰楁椂鑰楀姏鐨勪簨鎯呫傚湪鐜鎼缓鏃讹紝闇瑕佸垎鏋愯瀵煎叆鍝簺搴撶殑鍧愭爣锛岃屼笖杩橀渶瑕佸垎鏋愬鍏ヤ笌涔嬫湁渚濊禆鍏崇郴鐨勫叾浠栧簱鐨勫潗鏍囷紝涓鏃﹂夐敊浜嗕緷璧栫殑鐗堟湰锛岄殢涔嬭屾潵鐨勪笉鍏煎闂灏变細涓ラ噸闃荤椤圭洰鐨勫紑鍙戣繘搴︺ -## SpringBoot解决上述Spring的缺点 +## SpringBoot瑙e喅涓婅堪Spring鐨勭己鐐 -SpringBoot对上述Spring的缺点进行的改善和优化,基于约定优于配置的思想,可以让开发人员不必在配置与逻辑业务之间进行思维的切换,全身心的投入到逻辑业务的代码编写中,从而大大提高了开发的效率,一定程度上缩短了项目周期。 +SpringBoot瀵逛笂杩癝pring鐨勭己鐐硅繘琛岀殑鏀瑰杽鍜屼紭鍖栵紝鍩轰簬绾﹀畾浼樹簬閰嶇疆鐨勬濇兂锛屽彲浠ヨ寮鍙戜汉鍛樹笉蹇呭湪閰嶇疆涓庨昏緫涓氬姟涔嬮棿杩涜鎬濈淮鐨勫垏鎹紝鍏ㄨ韩蹇冪殑鎶曞叆鍒伴昏緫涓氬姟鐨勪唬鐮佺紪鍐欎腑锛屼粠鑰屽ぇ澶ф彁楂樹簡寮鍙戠殑鏁堢巼锛屼竴瀹氱▼搴︿笂缂╃煭浜嗛」鐩懆鏈熴 -在使用Spring框架进行开发的过程中,需要配置很多Spring框架包的依赖,如spring-core、spring-bean、spring-context等,而这些配置通常都是重复添加的,而且需要做很多框架使用及环境参数的重复配置,如开启注解、配置日志等。Spring Boot致力于弱化这些不必要的操作,提供默认配置,当然这些默认配置是可以按需修改的,快速搭建、开发和运行Spring应用 +鍦ㄤ娇鐢⊿pring妗嗘灦杩涜寮鍙戠殑杩囩▼涓紝闇瑕侀厤缃緢澶歋pring妗嗘灦鍖呯殑渚濊禆锛屽spring-core銆乻pring-bean銆乻pring-context绛夛紝鑰岃繖浜涢厤缃氬父閮芥槸閲嶅娣诲姞鐨勶紝鑰屼笖闇瑕佸仛寰堝妗嗘灦浣跨敤鍙婄幆澧冨弬鏁扮殑閲嶅閰嶇疆锛屽寮鍚敞瑙c侀厤缃棩蹇楃瓑銆係pring Boot鑷村姏浜庡急鍖栬繖浜涗笉蹇呰鐨勬搷浣滐紝鎻愪緵榛樿閰嶇疆锛屽綋鐒惰繖浜涢粯璁ら厤缃槸鍙互鎸夐渶淇敼鐨勶紝蹇熸惌寤恒佸紑鍙戝拰杩愯Spring搴旂敤 -# 和SpringMVC的关系 +# 鍜孲pringMVC鐨勫叧绯 ![](https://java-tutorial.oss-cn-shanghai.aliyuncs.com/20230415111153.png) -Spring Boot:Spring Boot使快速引导和开始开发基于Spring的应用程序变得容易。 它避免了很多样板代码。 它在幕后隐藏了很多复杂性,因此开发人员可以快速上手并轻松开发基于Spring的应用程序。 +Spring Boot锛歋pring Boot浣垮揩閫熷紩瀵煎拰寮濮嬪紑鍙戝熀浜嶴pring鐨勫簲鐢ㄧ▼搴忓彉寰楀鏄撱 瀹冮伩鍏嶄簡寰堝鏍锋澘浠g爜銆 瀹冨湪骞曞悗闅愯棌浜嗗緢澶氬鏉傛э紝鍥犳寮鍙戜汉鍛樺彲浠ュ揩閫熶笂鎵嬪苟杞绘澗寮鍙戝熀浜嶴pring鐨勫簲鐢ㄧ▼搴忋 -Spring MVC:Spring MVC是用于构建Web应用程序的Web MVC框架。 它包含许多用于各种功能的配置文件。 这是一个面向HTTP的Web应用程序开发框架。 +Spring MVC锛歋pring MVC鏄敤浜庢瀯寤篧eb搴旂敤绋嬪簭鐨刉eb MVC妗嗘灦銆 瀹冨寘鍚澶氱敤浜庡悇绉嶅姛鑳界殑閰嶇疆鏂囦欢銆 杩欐槸涓涓潰鍚慔TTP鐨刉eb搴旂敤绋嬪簭寮鍙戞鏋躲 -Spring Boot和Spring MVC出于不同的目的而存在。 下面讨论了Spring Boot和Spring MVC之间的主要区别: +Spring Boot鍜孲pring MVC鍑轰簬涓嶅悓鐨勭洰鐨勮屽瓨鍦ㄣ 涓嬮潰璁ㄨ浜哠pring Boot鍜孲pring MVC涔嬮棿鐨勪富瑕佸尯鍒細 | Spring Boot | Spring MVC | | --- | --- | -| Spring Boot用于使用合理的默认值打包基于Spring的应用程序。 | Spring MVC是Spring框架下基于模型视图控制器的Web框架。 | -| 它提供了默认配置来构建Spring支持的框架。 | 它提供了用于构建Web应用程序的即用型功能。 | -| 无需手动构建配置。 | 它需要手动进行构建配置。 | -| 不需要部署描述符。 | 部署描述符是必需的。 | -| 它避免了样板代码,并将依赖项包装在一个单元中。 | 它分别指定每个依赖项。 | -| 它减少了开发时间并提高了生产率。 | 实现相同目的需要更多时间。 | +| Spring Boot鐢ㄤ簬浣跨敤鍚堢悊鐨勯粯璁ゅ兼墦鍖呭熀浜嶴pring鐨勫簲鐢ㄧ▼搴忋 | Spring MVC鏄疭pring妗嗘灦涓嬪熀浜庢ā鍨嬭鍥炬帶鍒跺櫒鐨刉eb妗嗘灦銆 | +| 瀹冩彁渚涗簡榛樿閰嶇疆鏉ユ瀯寤篠pring鏀寔鐨勬鏋躲 | 瀹冩彁渚涗簡鐢ㄤ簬鏋勫缓Web搴旂敤绋嬪簭鐨勫嵆鐢ㄥ瀷鍔熻兘銆 | +| 鏃犻渶鎵嬪姩鏋勫缓閰嶇疆銆 | 瀹冮渶瑕佹墜鍔ㄨ繘琛屾瀯寤洪厤缃 | +| 涓嶉渶瑕侀儴缃叉弿杩扮銆 | 閮ㄧ讲鎻忚堪绗︽槸蹇呴渶鐨勩 | +| 瀹冮伩鍏嶄簡鏍锋澘浠g爜锛屽苟灏嗕緷璧栭」鍖呰鍦ㄤ竴涓崟鍏冧腑銆 | 瀹冨垎鍒寚瀹氭瘡涓緷璧栭」銆 | +| 瀹冨噺灏戜簡寮鍙戞椂闂村苟鎻愰珮浜嗙敓浜х巼銆 | 瀹炵幇鐩稿悓鐩殑闇瑕佹洿澶氭椂闂淬 | -# 和微服务、SpringCloud的关系 +# 鍜屽井鏈嶅姟銆丼pringCloud鐨勫叧绯 -Spring Boot是Spring家族的成员,它是一个全新的框架,它的设计目的是尽可能简单和快速的开发、运行Spring应用程序,简化配置。它为开发者快捷的使用Spring及相关开发框架提供了便利,但是它并不是微服务的框架,它只是为微服务框架的使用也提供了很好的脚手架。 +Spring Boot鏄疭pring瀹舵棌鐨勬垚鍛橈紝瀹冩槸涓涓叏鏂扮殑妗嗘灦锛屽畠鐨勮璁$洰鐨勬槸灏藉彲鑳界畝鍗曞拰蹇熺殑寮鍙戙佽繍琛孲pring搴旂敤绋嬪簭锛岀畝鍖栭厤缃傚畠涓哄紑鍙戣呭揩鎹风殑浣跨敤Spring鍙婄浉鍏冲紑鍙戞鏋舵彁渚涗簡渚垮埄锛屼絾鏄畠骞朵笉鏄井鏈嶅姟鐨勬鏋讹紝瀹冨彧鏄负寰湇鍔℃鏋剁殑浣跨敤涔熸彁渚涗簡寰堝ソ鐨勮剼鎵嬫灦銆 ![](https://java-tutorial.oss-cn-shanghai.aliyuncs.com/20230415111929.png) ![](https://java-tutorial.oss-cn-shanghai.aliyuncs.com/20230415111950.png) -上面两张图表明了两者的基本区别,springboot用于构建单个服务应用,也就是我们常说的微服务 +涓婇潰涓ゅ紶鍥捐〃鏄庝簡涓よ呯殑鍩烘湰鍖哄埆锛宻pringboot鐢ㄤ簬鏋勫缓鍗曚釜鏈嶅姟搴旂敤锛屼篃灏辨槸鎴戜滑甯歌鐨勫井鏈嶅姟 -而springcloud用于服务治理,也就是串联、管理和协调多个微服务(springboot应用程序) +鑰宻pringcloud鐢ㄤ簬鏈嶅姟娌荤悊锛屼篃灏辨槸涓茶仈銆佺鐞嗗拰鍗忚皟澶氫釜寰湇鍔★紙springboot搴旂敤绋嬪簭锛 -springcloud中包含了众多服务治理相关的组件:服务API网关Springcloud Gateway,配置中心组件Config Serever,断路器Circuit Breaker、服务注册中心Service Registty,监控组件Sleuth等 +springcloud涓寘鍚簡浼楀鏈嶅姟娌荤悊鐩稿叧鐨勭粍浠讹細鏈嶅姟API缃戝叧Springcloud Gateway锛岄厤缃腑蹇冪粍浠禖onfig Serever锛屾柇璺櫒Circuit Breaker銆佹湇鍔℃敞鍐屼腑蹇僑ervice Registty锛岀洃鎺х粍浠禨leuth绛 -# 使用Springboot的8个原因 +# 浣跨敤Springboot鐨8涓師鍥 -## 更快的开发 +## 鏇村揩鐨勫紑鍙 -Spring Boot 在 Spring 生态系统上做出了很多决定和固执己见的默认设置。 这种性质有助于开发人员快速设置并投入开发。 +Spring Boot 鍦 Spring 鐢熸佺郴缁熶笂鍋氬嚭浜嗗緢澶氬喅瀹氬拰鍥烘墽宸辫鐨勯粯璁よ缃 杩欑鎬ц川鏈夊姪浜庡紑鍙戜汉鍛樺揩閫熻缃苟鎶曞叆寮鍙戙 -例如,Spring MVC 可以通过大量 XML bean 定义和自定义 servlet 类实现。 但是使用 Spring Boot,它就像添加启动器依赖项一样简单。 绝对不需要代码生成 XML 配置。 +渚嬪锛孲pring MVC 鍙互閫氳繃澶ч噺 XML bean 瀹氫箟鍜岃嚜瀹氫箟 servlet 绫诲疄鐜般 浣嗘槸浣跨敤 Spring Boot锛屽畠灏卞儚娣诲姞鍚姩鍣ㄤ緷璧栭」涓鏍风畝鍗曘 缁濆涓嶉渶瑕佷唬鐮佺敓鎴 XML 閰嶇疆銆 -## 一切皆有先机 +## 涓鍒囩殕鏈夊厛鏈 -Spring Boot Starters 是包含库和它们的一些自动配置的 Maven 描述符。 而且,这些启动器有助于为 Spring Boot 应用程序提供功能。 想要建立数据库连接? 有一个启动器依赖项。 想与消息队列通话或发送电子邮件? Spring Boot 涵盖了这一切。 +Spring Boot Starters 鏄寘鍚簱鍜屽畠浠殑涓浜涜嚜鍔ㄩ厤缃殑 Maven 鎻忚堪绗︺ 鑰屼笖锛岃繖浜涘惎鍔ㄥ櫒鏈夊姪浜庝负 Spring Boot 搴旂敤绋嬪簭鎻愪緵鍔熻兘銆 鎯宠寤虹珛鏁版嵁搴撹繛鎺ワ紵 鏈変竴涓惎鍔ㄥ櫒渚濊禆椤广 鎯充笌娑堟伅闃熷垪閫氳瘽鎴栧彂閫佺數瀛愰偖浠讹紵 Spring Boot 娑电洊浜嗚繖涓鍒囥 -对于几乎所有的 Spring 模块,都有一个启动器依赖项可以为您配置所有内容。 甚至一些第三方库也通过他们的启动模块提供对 Spring 的支持。 如果没有这些启动器,您作为开发人员将不得不维护依赖项和 XML 配置。 这是您应该使用 Spring Boot 的另一个原因。 +瀵逛簬鍑犱箮鎵鏈夌殑 Spring 妯″潡锛岄兘鏈変竴涓惎鍔ㄥ櫒渚濊禆椤瑰彲浠ヤ负鎮ㄩ厤缃墍鏈夊唴瀹广 鐢氳嚦涓浜涚涓夋柟搴撲篃閫氳繃浠栦滑鐨勫惎鍔ㄦā鍧楁彁渚涘 Spring 鐨勬敮鎸併 濡傛灉娌℃湁杩欎簺鍚姩鍣紝鎮ㄤ綔涓哄紑鍙戜汉鍛樺皢涓嶅緱涓嶇淮鎶や緷璧栭」鍜 XML 閰嶇疆銆 杩欐槸鎮ㄥ簲璇ヤ娇鐢 Spring Boot 鐨勫彟涓涓師鍥犮 -## 嵌入式服务器 +## 宓屽叆寮忔湇鍔″櫒 -Spring Boot 为嵌入式 Tomcat、Jetty 和 Undertow 服务器提供开箱即用的支持。 这样,开发人员就不必担心在传统应用服务器中部署 Web 应用程序。 通过适当的启动器依赖项,您甚至可以将一种服务器技术与其他服务器技术交换。 所以你实际上最终得到了一个可以像任何 JAR 一样运行的 JAR 文件。 在启动时,JAR 包含足够的库和配置以作为应用程序服务器启动并侦听请求。 +Spring Boot 涓哄祵鍏ュ紡 Tomcat銆丣etty 鍜 Undertow 鏈嶅姟鍣ㄦ彁渚涘紑绠卞嵆鐢ㄧ殑鏀寔銆 杩欐牱锛屽紑鍙戜汉鍛樺氨涓嶅繀鎷呭績鍦ㄤ紶缁熷簲鐢ㄦ湇鍔″櫒涓儴缃 Web 搴旂敤绋嬪簭銆 閫氳繃閫傚綋鐨勫惎鍔ㄥ櫒渚濊禆椤癸紝鎮ㄧ敋鑷冲彲浠ュ皢涓绉嶆湇鍔″櫒鎶鏈笌鍏朵粬鏈嶅姟鍣ㄦ妧鏈氦鎹€ 鎵浠ヤ綘瀹為檯涓婃渶缁堝緱鍒颁簡涓涓彲浠ュ儚浠讳綍 JAR 涓鏍疯繍琛岀殑 JAR 鏂囦欢銆 鍦ㄥ惎鍔ㄦ椂锛孞AR 鍖呭惈瓒冲鐨勫簱鍜岄厤缃互浣滀负搴旂敤绋嬪簭鏈嶅姟鍣ㄥ惎鍔ㄥ苟渚﹀惉璇锋眰銆 -如果您对嵌入式服务器不感兴趣,您可以随时将 Spring Boot 应用程序从 JAR 转换为 WAR,并将它们部署到传统服务器。 +濡傛灉鎮ㄥ宓屽叆寮忔湇鍔″櫒涓嶆劅鍏磋叮锛屾偍鍙互闅忔椂灏 Spring Boot 搴旂敤绋嬪簭浠 JAR 杞崲涓 WAR锛屽苟灏嗗畠浠儴缃插埌浼犵粺鏈嶅姟鍣ㄣ -## IDE 对 Spring Boot 的支持 +## IDE 瀵 Spring Boot 鐨勬敮鎸 -所有主要的 IDE 都提供对 Spring Boot 代码帮助的支持。 例如,IntelliJ IDEA Ultimate 为 Spring Boot 项目提供了出色的代码完成和导航功能。除此之外,VSCode 和 Eclipse 也对其提供了丰富的功能支持。 +鎵鏈変富瑕佺殑 IDE 閮芥彁渚涘 Spring Boot 浠g爜甯姪鐨勬敮鎸併 渚嬪锛孖ntelliJ IDEA Ultimate 涓 Spring Boot 椤圭洰鎻愪緵浜嗗嚭鑹茬殑浠g爜瀹屾垚鍜屽鑸姛鑳姐傞櫎姝や箣澶栵紝VSCode 鍜 Eclipse 涔熷鍏舵彁渚涗簡涓板瘜鐨勫姛鑳芥敮鎸併 -## 生产环境常用功能 +## 鐢熶骇鐜甯哥敤鍔熻兘 -Spring Boot 提供了生产就绪的特性,例如监控、指标和开箱即用的注销。 有了这些特性,开发人员可以避免额外的配置。 例如,健康执行器端点等功能使应用程序状态监控成为可能。 例如, +Spring Boot 鎻愪緵浜嗙敓浜у氨缁殑鐗规э紝渚嬪鐩戞帶銆佹寚鏍囧拰寮绠卞嵆鐢ㄧ殑娉ㄩ攢銆 鏈変簡杩欎簺鐗规э紝寮鍙戜汉鍛樺彲浠ラ伩鍏嶉澶栫殑閰嶇疆銆 渚嬪锛屽仴搴锋墽琛屽櫒绔偣绛夊姛鑳戒娇搴旂敤绋嬪簭鐘舵佺洃鎺ф垚涓哄彲鑳姐 渚嬪锛 -您可以让像 Prometheus 这样的工具收集应用程序指标 +鎮ㄥ彲浠ヨ鍍 Prometheus 杩欐牱鐨勫伐鍏锋敹闆嗗簲鐢ㄧ▼搴忔寚鏍 -在您的 Kubernetes 或 Openshift 环境中使用就绪性和活跃度健康端点。 +鍦ㄦ偍鐨 Kubernetes 鎴 Openshift 鐜涓娇鐢ㄥ氨缁у拰娲昏穬搴﹀仴搴风鐐广 -只需添加其他属性或通过 /actuator/logging 端点即可更改日志记录级别。 +鍙渶娣诲姞鍏朵粬灞炴ф垨閫氳繃 /actuator/logging 绔偣鍗冲彲鏇存敼鏃ュ織璁板綍绾у埆銆 -此外,开发人员可以使用自己的自定义健康端点配置这些执行器端点。 +姝ゅ锛屽紑鍙戜汉鍛樺彲浠ヤ娇鐢ㄨ嚜宸辩殑鑷畾涔夊仴搴风鐐归厤缃繖浜涙墽琛屽櫒绔偣銆 -## 开箱即用的 JUnit 支持 +## 寮绠卞嵆鐢ㄧ殑 JUnit 鏀寔 -默认情况下,所有 Spring Boot 项目都带有 JUnit 5。 此外,Spring Boot 提供了@SpringBootTest 注解来在我们需要时初始化测试上下文。 所以开发人员只需要编写测试用例。 他们不必再担心测试用例的复杂 spring 上下文。 +榛樿鎯呭喌涓嬶紝鎵鏈 Spring Boot 椤圭洰閮藉甫鏈 JUnit 5銆 姝ゅ锛孲pring Boot 鎻愪緵浜咢SpringBootTest 娉ㄨВ鏉ュ湪鎴戜滑闇瑕佹椂鍒濆鍖栨祴璇曚笂涓嬫枃銆 鎵浠ュ紑鍙戜汉鍛樺彧闇瑕佺紪鍐欐祴璇曠敤渚嬨 浠栦滑涓嶅繀鍐嶆媴蹇冩祴璇曠敤渚嬬殑澶嶆潅 spring 涓婁笅鏂囥 -例如,下面自动生成的测试将检查上下文是否正确加载。 +渚嬪锛屼笅闈㈣嚜鍔ㄧ敓鎴愮殑娴嬭瘯灏嗘鏌ヤ笂涓嬫枃鏄惁姝g‘鍔犺浇銆 ```` @SpringBootTest class SpringBootDerbyDatabaseApplicationTests { - @测试 + @娴嬭瘯 void contextLoads() { } @@ -211,25 +211,25 @@ class SpringBootDerbyDatabaseApplicationTests { ## Spring Profiles -Spring Profiles 是 spring Boot 的一个强大特性,有助于隔离应用程序中的不同组件。 使用配置文件,您可以在特定环境中启用或禁用组件。 当您必须根据特定条件使用不同的组件时,这可能会派上用场。 +Spring Profiles 鏄 spring Boot 鐨勪竴涓己澶х壒鎬э紝鏈夊姪浜庨殧绂诲簲鐢ㄧ▼搴忎腑鐨勪笉鍚岀粍浠躲 浣跨敤閰嶇疆鏂囦欢锛屾偍鍙互鍦ㄧ壒瀹氱幆澧冧腑鍚敤鎴栫鐢ㄧ粍浠躲 褰撴偍蹇呴』鏍规嵁鐗瑰畾鏉′欢浣跨敤涓嶅悓鐨勭粍浠舵椂锛岃繖鍙兘浼氭淳涓婄敤鍦恒 ```` @Profile(value = {"prod","uat"}) class RabbitMQConfig { -// 听众 +// 鍚紬 } ```` -在上面的代码中,上下文将限制兔子侦听器仅在具有 prod 或 uat 作为活动配置文件的环境中运行。 +鍦ㄤ笂闈㈢殑浠g爜涓紝涓婁笅鏂囧皢闄愬埗鍏斿瓙渚﹀惉鍣ㄤ粎鍦ㄥ叿鏈 prod 鎴 uat 浣滀负娲诲姩閰嶇疆鏂囦欢鐨勭幆澧冧腑杩愯銆 -## 多种打包和部署选项 +## 澶氱鎵撳寘鍜岄儴缃查夐」 -该框架提供了多种方式来打包您的应用程序。 正如我们之前所说,应用程序可以是 JAR 或 WAR 文件。 通过一些额外的配置和参数,您还可以创建开箱即用的高性能 docker 镜像。 +璇ユ鏋舵彁渚涗簡澶氱鏂瑰紡鏉ユ墦鍖呮偍鐨勫簲鐢ㄧ▼搴忋 姝e鎴戜滑涔嬪墠鎵璇达紝搴旂敤绋嬪簭鍙互鏄 JAR 鎴 WAR 鏂囦欢銆 閫氳繃涓浜涢澶栫殑閰嶇疆鍜屽弬鏁帮紝鎮ㄨ繕鍙互鍒涘缓寮绠卞嵆鐢ㄧ殑楂樻ц兘 docker 闀滃儚銆 -启动和停止 Spring Boot 应用程序非常简单。 此外,您可以通过几个额外的步骤将这些 JAR 文件部署为 linux 服务。 JAR 文件称为 FAT jar,它们包含与应用程序相关的所有依赖项。 这使得部署过程不那么复杂。 实际上,这些构建可以在任何装有 Java 8 或更高版本的机器上运行。 +鍚姩鍜屽仠姝 Spring Boot 搴旂敤绋嬪簭闈炲父绠鍗曘 姝ゅ锛屾偍鍙互閫氳繃鍑犱釜棰濆鐨勬楠ゅ皢杩欎簺 JAR 鏂囦欢閮ㄧ讲涓 linux 鏈嶅姟銆 JAR 鏂囦欢绉颁负 FAT jar锛屽畠浠寘鍚笌搴旂敤绋嬪簭鐩稿叧鐨勬墍鏈変緷璧栭」銆 杩欎娇寰楅儴缃茶繃绋嬩笉閭d箞澶嶆潅銆 瀹為檯涓婏紝杩欎簺鏋勫缓鍙互鍦ㄤ换浣曡鏈 Java 8 鎴栨洿楂樼増鏈殑鏈哄櫒涓婅繍琛屻 -# 参考文章 +# 鍙傝冩枃绔 [https://spring.io/](https://spring.io/) @@ -243,4 +243,4 @@ class RabbitMQConfig { [https://cloud.tencent.com/developer/article/1620255](https://cloud.tencent.com/developer/article/1620255) -[https://www.yiibai.com/spring-boot/spring-vs-spring-boot-vs-spring-mvc.html](https://www.yiibai.com/spring-boot/spring-vs-spring-boot-vs-spring-mvc.html) \ No newline at end of file +[https://www.yiibai.com/spring-boot/spring-vs-spring-boot-vs-spring-mvc.html](https://www.yiibai.com/spring-boot/spring-vs-spring-boot-vs-spring-mvc.html)