一. 什么是springboot
1.用來(lái)簡(jiǎn)化spring應(yīng)用的初始搭建以及開(kāi)發(fā)過(guò)程 使用特定的方式來(lái)進(jìn)行配置(properties或yml文件)
2.創(chuàng)建獨(dú)立的spring引用程序 main方法運(yùn)行
3.嵌入的Tomcat 無(wú)需部署war文件
4.簡(jiǎn)化maven配置
5.自動(dòng)配置spring添加對(duì)應(yīng)功能starter自動(dòng)化配置
二.springboot常用的starter有哪些
可以去Maven倉(cāng)庫(kù)中搜索以下插件,pom文件依賴即可
Maven倉(cāng)庫(kù)官網(wǎng):http://mvnrepository.com/
1.spring-boot-starter-web (嵌入tomcat和web開(kāi)發(fā)需要servlet與jsp支持)
2.spring-boot-starter-data-jpa (數(shù)據(jù)庫(kù)支持)
3.spring-boot-starter-data-redis (redis數(shù)據(jù)庫(kù)支持)
4.spring-boot-starter-data-solr (solr搜索應(yīng)用框架支持)
5.mybatis-spring-boot-starter (第三方的mybatis集成starter)
三. springboot自動(dòng)配置的原理
1.@EnableAutoConfiguration這個(gè)注釋告訴SpringBoot“猜”你將如何想配置Spring,基于你已經(jīng)添加jar依賴項(xiàng)。如果spring-boot-starter-web已經(jīng)添加Tomcat和Spring MVC,這個(gè)注釋自動(dòng)將假設(shè)您正在開(kāi)發(fā)一個(gè)web應(yīng)用程序并添加相應(yīng)的spring設(shè)置然眼。會(huì)自動(dòng)去maven中讀取每個(gè)starter中的spring.factories文件 該文件里配置了所有需要被創(chuàng)建spring容器中的bean
2.使用@SpringbootApplication注解 可以解決根類或者配置類(我自己的說(shuō)法,就是main所在類)頭上注解過(guò)多的問(wèn)題葵腹,一個(gè)@SpringbootApplication相當(dāng)于@Configuration,@EnableAutoConfiguration和 @ComponentScan 并具有他們的默認(rèn)屬性值
四.springboot讀取配置文件的方式
springboot默認(rèn)讀取配置文件為application.properties或者是application.yml
springboot集成mybatis的過(guò)程
添加mybatis的starter maven依賴
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.2.0</version>
</dependency>
在mybatis的接口中 添加@Mapper注解
在application.yml配置數(shù)據(jù)源信息
五. springboot如何添加【修改代碼】自動(dòng)重啟功能
添加開(kāi)發(fā)者工具集=====spring-boot-devtools
六.微服務(wù)
以前的模式是 所有的代碼在同一個(gè)工程中 部署在同一個(gè)服務(wù)器中 同一個(gè)項(xiàng)目的不同模塊不同功能互相搶占資源
微服務(wù) 將工程根據(jù)不同的業(yè)務(wù)規(guī)則拆分成微服務(wù) 微服務(wù)部署在不同的機(jī)器上 服務(wù)之間進(jìn)行相互調(diào)用
Java微服務(wù)的框架有 dubbo(只能用來(lái)做微服務(wù)),spring cloud(提供了服務(wù)的發(fā)現(xiàn)鲸匿,斷路器等)
七. springcloud如何實(shí)現(xiàn)服務(wù)的注冊(cè)和發(fā)現(xiàn)
服務(wù)在發(fā)布時(shí) 指定對(duì)應(yīng)的服務(wù)名(服務(wù)名包括了IP地址和端口) 將服務(wù)注冊(cè)到注冊(cè)中心(eureka或者zookeeper)
這一過(guò)程是springcloud自動(dòng)實(shí)現(xiàn) 只需要在main方法添加@EnableDisscoveryClient 同一個(gè)服務(wù)修改端口就可以啟動(dòng)多個(gè)實(shí)例
調(diào)用方法:傳遞服務(wù)名稱通過(guò)注冊(cè)中心獲取所有的可用實(shí)例 通過(guò)負(fù)載均衡策略調(diào)用(ribbon和feign)對(duì)應(yīng)的服務(wù)
八.ribbon和feign區(qū)別
Ribbon添加maven依賴 spring-starter-ribbon 使用@RibbonClient(value="服務(wù)名稱") 使用RestTemplate調(diào)用遠(yuǎn)程服務(wù)對(duì)應(yīng)的方法
feign添加maven依賴 spring-starter-feign 服務(wù)提供方提供對(duì)外接口 調(diào)用方使用 在接口上使用@FeignClient("指定服務(wù)名")
Ribbon和Feign的區(qū)別:
Ribbon和Feign都是用于調(diào)用其他服務(wù)的阻肩,不過(guò)方式不同。
1.啟動(dòng)類使用的注解不同乔煞,Ribbon用的是@RibbonClient,F(xiàn)eign用的是@EnableFeignClients撕氧。
2.服務(wù)的指定位置不同喇完,Ribbon是在@RibbonClient注解上聲明,F(xiàn)eign則是在定義抽象方法的接口中使用@FeignClient聲明不脯。
3.調(diào)用方式不同刻诊,Ribbon需要自己構(gòu)建http請(qǐng)求防楷,模擬http請(qǐng)求然后使用RestTemplate發(fā)送給其他服務(wù)则涯,步驟相當(dāng)繁瑣冲簿。
Feign則是在Ribbon的基礎(chǔ)上進(jìn)行了一次改進(jìn)亿昏,采用接口的方式,將需要調(diào)用的其他服務(wù)的方法定義成抽象方法即可角钩,
不需要自己構(gòu)建http請(qǐng)求。不過(guò)要注意的是抽象方法的注解惨险、方法簽名要和提供服務(wù)的方法完全一致。
九.springcloud斷路器的作用
當(dāng)一個(gè)服務(wù)調(diào)用另一個(gè)服務(wù)由于網(wǎng)絡(luò)原因或者自身原因出現(xiàn)問(wèn)題時(shí) 調(diào)用者就會(huì)等待被調(diào)用
者的響應(yīng) 當(dāng)更多的服務(wù)請(qǐng)求到這些資源時(shí)
導(dǎo)致更多的請(qǐng)求等待 這樣就會(huì)發(fā)生連鎖效應(yīng)(雪崩效應(yīng)) 斷路器就是解決這一問(wèn)題斷路器
有完全打開(kāi)狀態(tài)
一定時(shí)間內(nèi) 達(dá)到一定的次數(shù)無(wú)法調(diào)用 并且多次檢測(cè)沒(méi)有恢復(fù)的跡象 斷路器完全打開(kāi)脊髓,那
么下次請(qǐng)求就不會(huì)請(qǐng)求到該服務(wù)半開(kāi),短時(shí)間內(nèi) 有恢復(fù)跡象 斷路器會(huì)將部分請(qǐng)求發(fā)給該服務(wù) 當(dāng)
能正常調(diào)用時(shí) 斷路器關(guān)閉,當(dāng)服務(wù)一直處于正常狀態(tài) 能正常調(diào)用 斷路器關(guān)閉