springboot詳解


一、問題綱要

  1、什么是springboot?

  2、springboot的結構和使用?

  3、springboot和傳統的spring項目的區別?

  4、分布式微服務?

二、詳情

  1、概念:

  Spring Boot是由Pivotal團隊提供的全新框架,屬於spring旗下的一個項目,其設計目的是用來簡化新Spring應用的初始搭建以及開發過程。該框架使用了特定的方式來進行配置,它使用“習慣優於配置”的理念,從而使開發人員不再需要定義樣板化的配置。使用springboot很容易創建一個獨立運行的spring項目,並且可以幾乎不使用spring配置或者使用很少的配置。

  2、結構和使用:

  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文件,里面配置一些少量的必要的應用配置,例如數據庫連接信息、服務器名稱端口號之類的信息。

  編寫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。

  3、區別:

  spring創造項目中需要的對象(控制反轉),解決耦合問題,實現“一站式”開發,aop面向切面編程,是各個框架無縫整合。而springboot擁有spring所有的功能,實現“零配置”簡化spring繁雜的配置。

  springboot可以是jar/war的形式發布,並且自帶tomcat容器(里面默認是servlet容器),spring的傳統項目只能是war形式,需要在tomcat中發布。

  springboot是自動配置,spring傳統web項目需要逐一配置。

  4、微服務:

  微服務的含義:使用定義好的邊界小的獨立組件來做好一件事情。微服務是相對於傳統的單跨式架構而言的。springboot就是服務框架。

  單塊式架構式一份代碼,部署和伸縮都是基於單元進行的,它的優點是易於部署,但是面臨着可用性低、可伸縮性差、集中發布的生命周期以及違反單一功能原則。而微服務是以單個獨立服務做一個功能,按照功能邊界拆分為單個服務,體現分布式的特征,因此每個微服務之間的通信需要解決。springCloud是基於springboot的為解決分布式開發常用問題提供的完整方案。提供配置管理、服務發現、斷路由、代理服務等做分布式開發常用問題的解決方案,這里不做詳細介紹。

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2026 CODEPRJ.COM