特性:
1.幫助開發者快速整合第三方常用框架
2.完全不需要外部服務器運行,內嵌入服務器,原理Java語言創建tomcat
3.完全採用註解形式替代了XML,原理因爲Spring體系本身支持註解啓動,只是做了包裝
優點:
快速創建獨立運行的Spring項目以及與主流框架集成
使用嵌入式的Servlet容器,應用無需打成WAR包
starters自動依賴與版本控制
大量的自動配置,簡化開發,也可以修改默認值
無需配置XML,無代碼生成,開箱即用
準生產環境的運行時監控
與雲計算的天然集成
微服務:
架構風格
一個應用應該是一組小型服務,可以通過HTTP的方式進行互通。
單體應用:
一個單體應用程序把它所有的功能放在一個單一進程中
一個微服務架構把每個功能元素放進一個獨立的服務中
並且通過在多個服務器上覆制這個單元進行擴展
並且通過跨服務器分發這些服務進行擴展,只在需要時才複製
每一個功能元素最終都是一個可獨立替換和獨立升級的軟件單元
環境準備:
IDEA配置MAVEN:
HelloWorld:
創建maven工程
導入maven依賴:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.7.RELEASE</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
主程序:
package com.huawei.springboot;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class Springboot04Application {
public static void main(String[] args) {
SpringApplication.run(Springboot04Application.class, args);
}
}
編寫相關的Controller:
package com;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class HelloApp {
@RequestMapping("/hello")
public String hello(){
return "Hello wolrd new !";
}
}
瀏覽器輸入對應的地址:
部署:
這個插件,可以將應用打包成一個可執行的jar包
導入maven插件:
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
點擊IDEA的右下角,出現右側可以打maven工程jar包的一欄
打成的jar包包含:
點擊clean然後點擊package或者install,會在target目錄打成一個jar包
在命令行jar包目錄輸入如: java -jar SpringBootTest-1.0-SNAPSHOT.jar
在瀏覽器中輸入訪問地址:http://localhost:8080/hello
結果一樣:
POM依賴分析:
父項目;
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.4.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
他的父項目是:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>2.2.4.RELEASE</version>
<relativePath>../../spring-boot-dependencies</relativePath>
</parent>
它來真正管理Springboot應用裏面的所有依賴版本;
以後我們導入依賴默認是不需要寫版本;
啓動器:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
spring-boot-starter-web:
springboot場景啓動器;幫我們導入了web模塊正常運行所依賴的組件;
Spring Boot將所有的功能場景都抽取出來,做成一個個的starters啓動器,只需要在項目裏面引入這些starter相關場景的所有依賴都會導入進來。要用什麼功能就導入什麼場景的啓動器。
主程序類:
@SpringBootApplication:SpringBoot應用標註在某個類上說明這個類是SpringBoot的主配置類
@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan(
excludeFilters = {@Filter(
type = FilterType.CUSTOM,
classes = {TypeExcludeFilter.class}
), @Filter(
type = FilterType.CUSTOM,
classes = {AutoConfigurationExcludeFilter.class}
)}
)
public @interface SpringBootApplication {
@SpringBootConfiguration:SpringBoot的配置類:
標註在某個類上,表示這是 一個Springboot的配置類;
@Configuration:配置類上來標註這個註解;
配置類---配置文件
@EnableAutoConfiguration:開啓自動配置功能;
@AutoConfigurationPackage
@Import({EnableAutoConfigurationImportSelector.class})
public@interfaceEnableAutoConfiguration{
@AutoConfigurationPackage:自動配置包
@Import({EnableAutoConfigurationImportSelector.class}):
Spring的底層註解@Import,給容器中導入一個組件,導入的組件由AutoConfigurationPackage.Registrar.class;
將主配置類@SpringBootApplication標註的類的所在包及下面所有子包裏面的所有組件掃描到Spring容器;
@Import({EnableAutoConfigurationImportSelector.class})
給容器導入組件:EnableAutoConfigurationImportSelector,導入哪些選擇器
publicclassEnableAutoConfigurationImportSelectorextendsAutoConfigurationImportSelector{
AutoConfigurationImportSelector:
publicString[]selectImports(AnnotationMetadataannotationMetadata)
將所有需要導入的組件以全類名的方式返回;這些組件就會添加到容器中;
會給容器中導入非常多的自動配置類
List<String>configurations=this.getCandidateConfigurations(annotationMetadata,attributes);
有了自動配置類,免去了我們手動編寫配置注入功能組件等的工作;
SpringFactoriesLoader.loadFactoryNames(this.getSpringFactoriesLoaderFactoryClass(),this.getBeanClassLoader());
SpringBoot在啓動的時候從類路徑下的/META-INF/spring.factories中 獲取EnableAutoConfiguration指定的值,將這些值作爲自動配置類導入打容器中,自動配置類就生效,幫我們進行自動配置工作.
J2EE的整體整合解決方案和自動配置都在
E:\apache-maven-3.3.9\repository\org\springframework\boot\spring-boot-autoconfigure\1.5.7.RELEASE\spring-boot-autoconfigure-1.5.7.RELEASE.jar
使用Spring Initializer快速創建SpringBoot項目:
IDEA:選擇我們需要的模塊;嚮導會聯網創建項目
默認生成的SpringBoot項目;
主程序已經生成好了,我們只需要寫自己的邏輯
resources文件夾中目錄結構
static:保存所有的靜態資源;js css images;
templates:保存所有的模塊頁面(SpringBoot默認jar包使用嵌入式的tomcat,默認不支持JSP頁面);可以使用模塊引擎(freemarker、thymeleaf);
application.properties:SpringBoot應用的配置文件;可以修改一些默認配置;
application.properties文件裏修改端口號:
server.port=8081