1、問題綱要java
一、什麼是springboot?web
二、springboot的結構和使用?spring
三、springboot和傳統的spring項目的區別?數據庫
四、分佈式微服務?編程
2、詳情tomcat
一、概念:springboot
Spring Boot是由Pivotal團隊提供的全新框架,屬於spring旗下的一個項目,其設計目的是用來簡化新Spring應用的初始搭建以及開發過程。該框架使用了特定的方式來進行配置,它使用「習慣優於配置」的理念,從而使開發人員再也不須要定義樣板化的配置。使用springboot很容易建立一個獨立運行的spring項目,而且能夠幾乎不使用spring配置或者使用不多的配置。服務器
二、結構和使用:架構
springboot和普通的javase項目類似,一個普通的maven項目添加它的依賴就行。spring提供不少的start pom簡化maven的依賴加載,通常會配置一個parent依賴,控制整個springboot的版本,若是是web項目,配置一個spring-boot-start-web依賴,會自動關聯一些經常使用的web依賴,好比springmvc、servlet甚至它會嵌入一個tomcat容器,所以無需再tomcat服務器中進行發佈。springboot會自動掃描src/main/resources文件夾下的配置,通常是一個properties(application.properties)或者yaml文件,裏面配置一些少許的必要的應用配置,例如數據庫鏈接信息、服務器名稱端口號之類的信息。mvc
編寫springboot的入口類,通常命名是xxxApplication.java,其餘的類都在它所在的目錄或者子目錄中,這樣spring容器會自動掃描有相應註解的類。入口類上的註解是SpringBootApplicaton,類中有個Main方法做爲程序入口,springboot框架提供一個方法啓動項目Application.run(本類名.class,args)。一直運行就啓動springboot項目。
以上兩步就是最基本的配置,而且是一個呈現一個基本的springboot雛形。
springboot運行原理:
入口註解@SpringBootApplication註解是一個組合註解,它包含@configuration、@EnableAutoConfiguration和@componentScan三個註解組成。它的核心是@EnableAutoConfiguration註解。這個註解中有一個@Import註解,它導入配置功能EnableAutoConfigurationImportSelector,這個類有個方法掃描具備/META-INF/spring.factories文件的jar。spring.factories中聲明瞭哪些自動配置。而後咱們在application.properties文件中進行相應的配置,好比數據庫鏈接,使springboot中的自動配置中的參數是咱們須要的配置。
springboot啓動:
springboot項目打包後的結構
在manifest.mf中內容以下:
能夠看到有Main-Class是org.springframework.boot.loader.JarLauncher ,這個是jar啓動的Main函數。
還有一個Start-Class是com.example.SpringBootDemoApplication,這個是咱們應用本身的Main函數。
springboot的配置方法:
springboot配置最大的特色是「約定優於配置」,不少配置方式都是使用的業界習慣的方式配置,通常遵循springboot的配置方式,大部分配置都可以在application.properties文件中配置,並且很是簡單。可是也有不能再這個文件中配置的。
springboot是spring旗下的產品,分爲三種配置方式:
1)xml文件形式。從spring1.x版本開始使用。
2)xml和註解並用的實行。基本配置使用xml(例如數據庫配置),業務配置使用註解。
3)Java形式的配置,從spring4.x推薦使用。使用@Configuration註解代表該類是一個註解類,@Bean配置方法上代表當前方法返回一個Bean。
三、區別:
spring創造項目中須要的對象(控制反轉),解決耦合問題,實現「一站式」開發,aop面向切面編程,是各個框架無縫整合。而springboot擁有spring全部的功能,實現「零配置」簡化spring繁雜的配置。
springboot能夠是jar/war的形式發佈,而且自帶tomcat容器(裏面默認是servlet容器),spring的傳統項目只能是war形式,須要在tomcat中發佈。
springboot是自動配置,spring傳統web項目須要逐一配置。
四、微服務:
微服務的含義:使用定義好的邊界小的獨立組件來作好一件事情。微服務是相對於傳統的單跨式架構而言的。springboot就是服務框架。
單塊式架構式一份代碼,部署和伸縮都是基於單元進行的,它的優勢是易於部署,可是面臨着可用性低、可伸縮性差、集中發佈的生命週期以及違反單一功能原則。而微服務是以單個獨立服務作一個功能,按照功能邊界拆分爲單個服務,體現分佈式的特徵,所以每一個微服務之間的通訊須要解決。springCloud是基於springboot的爲解決分佈式開發經常使用問題提供的完整方案。提供配置管理、服務發現、斷路由、代理服務等作分佈式開發經常使用問題的解決方案,這裏不作詳細介紹。