javascript
springboot 历史版本文档_乘风破浪,SpringBoot入门
SpringBoot入門篇
前言
在普通的java項目中,大量的xml文件配置起來相當繁瑣,導致了開發效率非常低下,整合第三方框架的配置可能會存在沖突問題導致部署效率低,打包方式是將項目打成一個war包放入到tomactwebapps目錄下執行。簡單來說,傳統的開發方式有以下令人苦惱的的特點
- 笨重的開發
- 繁瑣的配置
- 低下的開發效率
- 復雜的部署流程
- 集成第三方難度大
為了解決以上問題,SpringBoot被提出來了,它設計的目的就是為了簡化Spring應用的初始搭建及開發過程,其約定大于配置,去繁從簡。
看到這里,你覺得我是在吹牛逼,SpringBoot真的有那么優秀么?如果,你還是不信,咱們去官網的開發文檔瞅一瞅,
打開SpringBoot官網,打開文檔,讓我們一探究竟。
文檔里有這樣一段話介紹SpringBoot框架的特點
因為全是英文,我直接精煉下給你看,SpringBoot的優點總結如下:
- 快速整合第三方框架(Maven依賴關系,Maven繼承)
- 打包方式完全采用注解,采用注解方式啟動SpringMVC,SpringBoot Web組件集成SpringMVC框架
- 簡化xml配置
- 內置嵌入Http服務器(默認為Tomcat、Jetty),降低了對環境的要求
- 最終以java應用程序進行執行(SpringBoot項目中沒有Web.xml),運行中應用狀態的監控。
- Starters自動依賴于版本控制
工欲善其事,必先利其器,既然SpringBoot有那么多優點,我們肯定是要好好學的。在學習SpringBoot之前,需要搭建SpringBoot工程,那么問題來了,正在看文章的你知道怎么搭建SpringBoot工程么?它有幾種方式呢?這些方式各自有什么特點及聯系?工程是如何啟動的呢?
文章目錄
1、SpringBoot創建的三種方式
2、程序是如何執行的
3、目錄結構
方式一:網上在線創建
這種方式是在網上在線創建,然后可以導出壓縮包,解壓后的文件就是一個SpringBoot工程文件。
訪問https://start.spring.io/,打開后就是一個創建工程頁面,
Project:選擇創建工程的方式,可以使用Maven或者Cradle,這里我們采用Maven方式創建
Language:開發語言的選擇,我們選擇的Java
SpringBoot: SpringBoot的版本,選擇的是2.3.3
Project Metadata: 項目信息
Group 和 Artifact :項目坐標
Name:項目名稱
Description:對工程的描述
Package name: 項目內的包名稱
Packaging:打包方式,我們這里的選擇的是jar包
Java: Java語言的版本,這里選擇是11
Dependencies:添加依賴,這里我們僅僅添加Spring Web,它包含了Spring、SpringMVC一整套東西
每個選項都選擇好,就可以直接生成一個工程文件壓縮包了,我們只需要使用開發工具(Intellij IDEA)打開即可。
方式二:使用IDEA的spring Initializer
方式二是在IDEA使用Spring Initializer直接創建
可以看出,Spring Initializer與方式一相同,默認采用https://start.spring.io創建
同方式一相同,填寫坐標、語言、項目名稱、項目描述和加載依賴等信息。
NOTE:
方式一和方式二創建工程時都需要聯網,本質上都是在https://start.spring.io網址上完成的,一旦網址加載速度慢或者打不開。因為SpringBoot工程本質上就是一個Maven工程,我們可以在Maven工程的基礎上改造為SpringBoot工程
方式三:改造Maven工程創建SpringBoot
我們首先創建一個Maven工程
填寫坐標
確定項目名稱
在pom文件中加入以下信息
<parent>
????????<groupId>org.springframework.bootgroupId>
????????<artifactId>spring-boot-starter-parentartifactId>
????????<version>2.3.3.RELEASEversion>
????parent>
??<dependencies>
??????
????????<dependency>
????????????<groupId>org.springframework.bootgroupId>
????????????<artifactId>spring-boot-starter-webartifactId>
????????dependency>
????dependencies>
???
添加啟動類
@EnableAutoConfiguration
public?class?Demo3Application?{
????????public?static?void?main(String[]?args)?{
????????????SpringApplication.run(Demo3Application.class,?args);
????????}
????}
深入理解程序的執行
1、Pom文件
1、父項目
- 父項目
????????<groupId>org.springframework.bootgroupId>
????????<artifactId>spring-boot-starter-parentartifactId>
????????<version>2.3.3.RELEASEversion>
????parent>
- spring-boot-starter-parent的父項目是
????<groupId>org.springframework.bootgroupId>
????<artifactId>spring-boot-dependenciesartifactId>
????<version>2.3.3.RELEASEversion>
????<relativePath>../../spring-boot-dependenciesrelativePath>
??parent>
spring-boot-dependencies管理了SpingBoot應用中的所有依賴,它是SpringBoot的版本仲裁中心,以后我們導入依賴時默認是不需要寫版本的(沒有在dependencies里面管理的依賴自然需要聲明版本號) 。
2、啟動器
?<dependencies>????????<dependency>
????????????<groupId>org.springframework.bootgroupId>
????????????<artifactId>spring-boot-starter-webartifactId>
????????dependency>
????dependencies>
spring-boot-starter: 是SpringBoot的場景啟動器,spring-boot-starter-web幫我們導入了web模塊正常運行所依賴的組件
深入spring-boot-starter-web的底層,我們可以看到它集成常用web模塊
<dependencies>????<dependency>
??????<groupId>org.springframework.bootgroupId>
??????<artifactId>spring-boot-starterartifactId>
??????<version>2.3.3.RELEASEversion>
??????<scope>compilescope>
????dependency>
????<dependency>
??????<groupId>org.springframework.bootgroupId>
??????<artifactId>spring-boot-starter-jsonartifactId>
??????<version>2.3.3.RELEASEversion>
??????<scope>compilescope>
????dependency>
????<dependency>
??????<groupId>org.springframework.bootgroupId>
??????<artifactId>spring-boot-starter-tomcatartifactId>
??????<version>2.3.3.RELEASEversion>
??????<scope>compilescope>
????dependency>
????<dependency>
??????<groupId>org.springframeworkgroupId>
??????<artifactId>spring-webartifactId>
??????<version>5.2.8.RELEASEversion>
??????<scope>compilescope>
????dependency>
????<dependency>
??????<groupId>org.springframeworkgroupId>
??????<artifactId>spring-webmvcartifactId>
??????<version>5.2.8.RELEASEversion>
??????<scope>compilescope>
????dependency>
??dependencies>
NOTE:Spring Boot將所有的功能場景都抽取出來,做成一個個的starters(啟動器),只需要在項目里面引入這些starter 相關場景的所有依賴都會導入進來。要用什么功能就導入什么場景的啟動器。
2、主程序類(入口類)
@SpringBootApplication//@SpringBootApplication?來標注一個主程序類,說明這是一個SpringBoot應用public?class?demo1?{
????public?static?void?main(String[]?args)?{
??//讓Spring應用啟動起來
????????SpringApplication.run(demo1.class,args);
????}
}
@SpringBootApplication:標注在某個類上說明這個類是SpringBoot的主配置類,SpringBoot 就應該運行這個類的main方法來啟動SpringBoot應用
打開SpringBootApplication的底層,發現它是一個組合注解
@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的配置類
打開@SpringBootConfiguration底層
@Target({ElementType.TYPE})@Retention(RetentionPolicy.RUNTIME)
@Documented
@Configuration
public?@interface?SpringBootConfiguration?{
@Configuration:表明是一個配置類,配置類的作用等同于配置文件
EnableAutoConfiguration
@EnableAutoCon?guration告訴SpringBoot開啟自動配置功能,這樣自動配置才能生效。
打開@EnableAutoConfiguration
@AutoConfigurationPackage@Import({AutoConfigurationImportSelector.class})
public?@interface?EnableAutoConfiguration?{
@AutoCon?gurationPackage:自動配置包
@Import({Registrar.class})將主配置類(@SpringBootApplication標注的類)的所在包及下面所有子包里面的所有組件掃描到Spring容器
@Import(AutoCon?gurationPackages.Registrar.class)
給容器導入組件
EnableAutoCon?gurationImportSelector:導入哪些組件的選擇器
將所有需要導入的組件以全類名的方式返回,這些組件就會被添加到容器,會給容器中導入非常多的自動配置類(xxxAutoCon?guration),就是給容器中導入這個場景需要的所有組件, 并配置好這些組件。
3、resources文件夾下的目錄結構
- static:保存所有的靜態資源;js css ?images
- templates:保存所有的模板頁面(Spring Boot默認jar包使用嵌入式的Tomcat,默認不支持JSP頁 面),可以使用模板引擎(freemarker、thymeleaf)
- application.properties:Spring Boot應用的配置文件,可以修改一些默認設置
關注公眾號,讓我們每天進步一點
總結
以上是生活随笔為你收集整理的springboot 历史版本文档_乘风破浪,SpringBoot入门的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 大数据分析如何使用pandas进行时间序
- 下一篇: UEditor .Net版本任意文件上传