Spring Boot是什么
百科定義
Spring Boot是由Pivotal團隊提供的全新框架,其設(shè)計目的是用來簡化新Spring應(yīng)用的初始搭建以及開發(fā)過程。該框架使用了特定的方式來進行配置,從而使開發(fā)人員不再需要定義樣板化的配置。通過這種方式,Spring Boot致力于在蓬勃發(fā)展的快速應(yīng)用開發(fā)領(lǐng)域(rapid application development)成為領(lǐng)導(dǎo)者。
同類技術(shù)
- jboot
- Jeecg-P3
對比同類技術(shù)優(yōu)缺點
- 優(yōu)點
1.去除了大量的xml配置文件
2.簡化復(fù)雜的依賴管理
3.配合各種starter使用,基本上可以做到自動化配置
4.快速啟動容器
5.配合Maven或Gradle等構(gòu)件工具打成Jar包后,Java -jar 進行部署運行比較簡單
6.創(chuàng)建獨立Spring應(yīng)用程序,嵌入式Tomcat,Jetty容器,無需部署WAR包,簡化Maven及Gradle配置,盡可能的自動化配置Spring,直接植入產(chǎn)品環(huán)境下的實用功能,比如度量指標(biāo)、健康檢查及擴展配置等,無需代碼生成及XML配置。 - 缺點
1.從原來的xml配置方式轉(zhuǎn)換到JAVA配置方式變化有點大,不太適應(yīng)
2.Spring Boot 比較適合做微服務(wù),不適合做比較大型的項目。
組成成分
- spring-boot模塊
該模塊提供了一些特性用來支持springboot中其他模塊,這些特性包含如下。
SpringApplication類提供了靜態(tài)方法以便于寫一個獨立了spring應(yīng)用程序,該類的主要職責(zé)是create和refresh一個合適的Spring 應(yīng)用程序上下文(ApplicationContext)給web應(yīng)用提供了一個可選的web容器(目前有Tomcat或Jetty),一流的外部配置的支持(application.properties),提供了便捷的應(yīng)用程序上下文(ApplicationContext)的初始化器,以便在ApplicationContext使用前對其進行用戶定制。 - spring-boot-autoconfigure模塊
springboot可以依據(jù)classpath里面的依賴的內(nèi)容來自動配置bean到IOC容器,但是要開啟這個自動配置功能需要添加@EnableAutoConfiguration注解。Auto-configuration會嘗試推斷哪些beans是用戶可能會需要的。比如如果HSQLDB包在當(dāng)前classpath下,并且用戶并沒有配置其他數(shù)據(jù)庫鏈接,這時候Auto-configuration功能會自動注入一個基于內(nèi)存的數(shù)據(jù)庫連接到應(yīng)用的IOC容器。
目前 auto-configuration 提供以下類型的注入:
Web (Tomcat or Jetty, Spring MVC)
JDBC (Commons DBCP, embedded databases, jdbcTemplate)
JPA with Hibernate
Spring Data JPA (automatically detecting Repository classes)
Spring Batch (including JobLauncherCommandLineRunners and database initialization)
Thymeleaf templating
Reactor asynchronous JVM programming
auto-configuration使用在class上標(biāo)注@Configuration注解實現(xiàn),并且使用@Configuration的時候一般帶有一定的約束,比如同時還在Class上標(biāo)注了 @ConditionalOnClass(當(dāng)前classpath下存在類) 和@ConditionalOnMissingBean(當(dāng)前IOC容器不存在bean)注解。這保證了classpath下存在一些相關(guān)的類并且需要的bean還沒有被注入到IOC時候auto-configuration才生效。 - 1.3、 spring-boot-starters模塊
Starters是一組可以方便使用的依賴描述,starter里面一般只有一個POM文件,pom文件里面添加了Spring框架和一些相關(guān)的功能模塊的依賴配置,你需要使用某些功能時候在也不需要到處查找需要的功能都是那些jar包提供的并配置到POM文件了。比如如果你想要使用Spring和JPA作為數(shù)據(jù)庫存取,你需要引入spring-boot-starter - 1.4、 spring-boot-actuator模塊
SpringBoot還提供了許多附加功能,可以幫助我們在應(yīng)用程序部署到生產(chǎn)環(huán)境后對其進行監(jiān)控和管理。springboot提了http,jmx,shell等公交來管理和監(jiān)控我們的應(yīng)用程序。另外審計,監(jiān)控和性能指標(biāo)的?可以自動應(yīng)用到應(yīng)用程序上。 - 1.5、 spring-boot-cli模塊
Spring Boot CLI是一個命令行公交用來快速搭建一個spring原型應(yīng)用,并且可以運行Groovy腳本。 - 1.6、 spring-boot-loader模塊
Spring Boot Loader模塊允許我們使用java -jar archive.jar運行包含嵌套依賴的jar或者war文件,
Spring Boot Loader提供了三種類啟動器 (JarLauncher, WarLauncher and PropertiesLauncher),這些類啟動器的目的一樣都是加載嵌套在jar里面的資源(比如class文件,配置文件等)。[Jar|War]Launcher固定去查找當(dāng)前jar的lib目錄里面的嵌套jar文件里面的資源。
Spring Boot為什么會出現(xiàn)
Spring Boot的用途
使用springboot很容易創(chuàng)建一個獨立運行的spring項目,并且可以幾乎不使用spring配置或者使用很少的配置。
Spring Boot出現(xiàn)之前的狀況
一個web項目需要添加大量的依賴和xml配置
需要部署tomcat,jetty等來啟動項目
SpringBoot應(yīng)用
官方示例
https://spring.io/projects/spring-boot#learn