springboot執(zhí)行流程(springboot程序怎么運(yùn)行)

本篇文章給大家談?wù)剆pringboot執(zhí)行流程,以及springboot程序怎么運(yùn)行對(duì)應(yīng)的知識(shí)點(diǎn),文章可能有點(diǎn)長,但是希望大家可以閱讀完,增長自己的知識(shí),最重要的是希望...
本篇文章給大家談?wù)剆pringboot執(zhí)行流程,以及springboot程序怎么運(yùn)行對(duì)應(yīng)的知識(shí)點(diǎn),文章可能有點(diǎn)長,但是希望大家可以閱讀完,增長自己的知識(shí),最重要的是希望對(duì)各位有所幫助,可以解決了您的問題,不要忘了收藏本站喔。
SpringBoot究竟是如何跑起來的
如果我們使用的是SpringApplication的靜態(tài)run方法,那么,這個(gè)方法里面首先要?jiǎng)?chuàng)建一個(gè)SpringApplication對(duì)象實(shí)例,然后調(diào)用這個(gè)創(chuàng)建好的SpringApplication的實(shí)例方法。在SpringApplication實(shí)例初始化的時(shí)候,它會(huì)提前做幾件事情:
根據(jù)classpath里面是否存在某個(gè)特征類(org.springframework.web.context.ConfigurableWebApplicationContext)來決定是否應(yīng)該創(chuàng)建一個(gè)為Web應(yīng)用使用的ApplicationContext類型。
使用SpringFactoriesLoader在應(yīng)用的classpath中查找并加載所有可用的ApplicationContextInitializer。
使用SpringFactoriesLoader在應(yīng)用的classpath中查找并加載所有可用的ApplicationListener。
推斷并設(shè)置main方法的定義類。
2)SpringApplication實(shí)例初始化完成并且完成設(shè)置后,就開始執(zhí)行run方法的邏輯了,方法執(zhí)行伊始,首先遍歷執(zhí)行所有通過SpringFactoriesLoader可以查找到并加載的SpringApplicationRunListener。調(diào)用它們的started()方法,告訴這些SpringApplicationRunListener,“嘿,SpringBoot應(yīng)用要開始執(zhí)行咯!”。
3)創(chuàng)建并配置當(dāng)前SpringBoot應(yīng)用將要使用的Environment(包括配置要使用的PropertySource以及Profile)。
4)遍歷調(diào)用所有SpringApplicationRunListener的environmentPrepared()的方法,告訴他們:“當(dāng)前SpringBoot應(yīng)用使用的Environment準(zhǔn)備好了咯!”。
5)如果SpringApplication的showBanner屬性被設(shè)置為true,則打印banner。
6)根據(jù)用戶是否明確設(shè)置了applicationContextClass類型以及初始化階段的推斷結(jié)果,決定該為當(dāng)前SpringBoot應(yīng)用創(chuàng)建什么類型的ApplicationContext并創(chuàng)建完成,然后根據(jù)條件決定是否添加ShutdownHook,決定是否使用自定義的BeanNameGenerator,決定是否使用自定義的ResourceLoader,當(dāng)然,最重要的,將之前準(zhǔn)備好的Environment設(shè)置給創(chuàng)建好的ApplicationContext使用。
7)ApplicationContext創(chuàng)建好之后,SpringApplication會(huì)再次借助Spring-FactoriesLoader,查找并加載classpath中所有可用的ApplicationContext-Initializer,然后遍歷調(diào)用這些ApplicationContextInitializer的initialize(applicationContext)方法來對(duì)已經(jīng)創(chuàng)建好的ApplicationContext進(jìn)行進(jìn)一步的處理。
8)遍歷調(diào)用所有SpringApplicationRunListener的contextPrepared()方法。
9)最核心的一步,將之前通過@EnableAutoConfiguration獲取的所有配置以及其他形式的IoC容器配置加載到已經(jīng)準(zhǔn)備完畢的ApplicationContext。
10)遍歷調(diào)用所有SpringApplicationRunListener的contextLoaded()方法。
11)調(diào)用ApplicationContext的refresh()方法,完成IoC容器可用的最后一道工序。
12)查找當(dāng)前ApplicationContext中是否注冊(cè)有CommandLineRunner,如果有,則遍歷執(zhí)行它們。
13)正常情況下,遍歷執(zhí)行SpringApplicationRunListener的finished()方法、(如果整個(gè)過程出現(xiàn)異常,則依然調(diào)用所有SpringApplicationRunListener的finished()方法,只不過這種情況下會(huì)將異常信息一并傳入處理)
springboot啟動(dòng)原理流程
SpringBoot是SpringFramework的一個(gè)擴(kuò)展,它簡(jiǎn)化了Spring應(yīng)用程序的開發(fā)和部署流程,并提供了一種快速創(chuàng)建可獨(dú)立運(yùn)行Spring應(yīng)用程序的方式。下面是SpringBoot啟動(dòng)原理的簡(jiǎn)單流程:
1.啟動(dòng)類(MainClass)的加載
SpringBoot應(yīng)用程序的啟動(dòng)類是一個(gè)Java類,其中包含了main()方法,它是整個(gè)應(yīng)用程序的入口。在啟動(dòng)過程中,Java虛擬機(jī)(JVM)會(huì)首先加載該類。
2.SpringBoot環(huán)境的準(zhǔn)備
在啟動(dòng)類加載完成后,SpringBoot會(huì)在應(yīng)用程序的classpath中查找application.properties或application.yml文件,讀取其中的配置信息,然后初始化Spring環(huán)境并創(chuàng)建ApplicationContext對(duì)象。此外,SpringBoot還會(huì)自動(dòng)掃描所有帶有注解的類,并將它們注冊(cè)到Spring容器中。
3.SpringBoot的自動(dòng)配置
SpringBoot具有一套智能的自動(dòng)配置機(jī)制,可以根據(jù)應(yīng)用程序所使用的依賴庫和配置文件自動(dòng)配置SpringBean。例如,如果應(yīng)用程序中引入了Hibernate,SpringBoot會(huì)根據(jù)Hibernate的依賴信息自動(dòng)配置一個(gè)SessionFactoryBean。這樣,開發(fā)人員就無需手動(dòng)配置這些Bean,可以更加專注于業(yè)務(wù)邏輯的實(shí)現(xiàn)。
4.SpringApplication的啟動(dòng)
當(dāng)SpringBoot環(huán)境準(zhǔn)備好之后,就會(huì)創(chuàng)建一個(gè)SpringApplication對(duì)象。該對(duì)象負(fù)責(zé)啟動(dòng)SpringBoot應(yīng)用程序,并將所有Bean注冊(cè)到Spring容器中。它還可以接收并處理控制臺(tái)命令行參數(shù),以及在應(yīng)用程序啟動(dòng)和關(guān)閉時(shí)執(zhí)行一些回調(diào)方法。
5.實(shí)例化Web容器
如果應(yīng)用程序是一個(gè)Web應(yīng)用程序,則SpringBoot會(huì)自動(dòng)實(shí)例化嵌入式Web服務(wù)器,如Tomcat、Jetty或Undertow等。SpringBoot將創(chuàng)建WebServer對(duì)象,并將所有Servlet、Filter和Listener注冊(cè)到其中。最后,Web容器會(huì)啟動(dòng),并開始監(jiān)聽來自客戶端的HTTP請(qǐng)求。如果應(yīng)用程序不是Web應(yīng)用程序,則這一步可以略過。
6.應(yīng)用程序啟動(dòng)完成
當(dāng)Web容器啟動(dòng)之后,應(yīng)用程序就開始監(jiān)聽來自客戶端的HTTP請(qǐng)求,并根據(jù)配置文件中的路由規(guī)則進(jìn)行處理。此時(shí),應(yīng)用程序已經(jīng)啟動(dòng)完成,并可以提供相關(guān)的服務(wù)。如果應(yīng)用程序需要結(jié)束,可以通過調(diào)用SpringApplication對(duì)象的close()方法來關(guān)閉Spring容器和Web容器并釋放資源。
以上就是SpringBoot啟動(dòng)原理的基本流程,整個(gè)過程涉及到了多個(gè)組件和技術(shù)點(diǎn),包括Java虛擬機(jī)、SpringFramework、Web容器等。了解這些原理可以幫助開發(fā)者更好地理解和使用SpringBoot。
如何啟動(dòng)springboot
啟動(dòng)SpringBoot項(xiàng)目的方式有以下幾種:
1.通過IDE啟動(dòng):在IDE中打開項(xiàng)目,找到入口類,右鍵點(diǎn)擊運(yùn)行即可。不同的IDE啟動(dòng)方式可能略有不同,可以參考相應(yīng)的文檔。
2.通過命令行啟動(dòng):在項(xiàng)目的根目錄下,使用命令行輸入`mvnspring-boot:run`或`./gradlewbootRun`即可啟動(dòng)項(xiàng)目。需要確保已經(jīng)安裝了Maven或Gradle,且配置了相應(yīng)的環(huán)境變量。
3.打包部署:使用Maven或Gradle打包項(xiàng)目,生成可執(zhí)行的JAR包或WAR包,然后通過命令行啟動(dòng)。執(zhí)行命令:`java-jaryour-project.jar`,即可啟動(dòng)項(xiàng)目。需要注意的是,使用該方式啟動(dòng)項(xiàng)目時(shí),需要確保已經(jīng)安裝了Java運(yùn)行環(huán)境,并配置了相應(yīng)的環(huán)境變量。
以上是啟動(dòng)SpringBoot項(xiàng)目的幾種常見方式,選擇哪種方式啟動(dòng)視具體情況而定。
xhell部署項(xiàng)目后如何啟動(dòng)springboot項(xiàng)目
在xhell部署項(xiàng)目后,可以通過以下步驟啟動(dòng)springboot項(xiàng)目:
首先,進(jìn)入項(xiàng)目所在目錄,使用命令行工具執(zhí)行“java-jar項(xiàng)目名稱.jar”命令,啟動(dòng)項(xiàng)目;
其次,等待項(xiàng)目啟動(dòng)完成后,在瀏覽器中輸入“http://localhost:8080”訪問項(xiàng)目。如果需要后臺(tái)運(yùn)行項(xiàng)目,可以使用nohup命令將項(xiàng)目放到后臺(tái)運(yùn)行。
spring boot菜鳥教程
SpringBoot菜鳥教程:
1、SpringBoot基礎(chǔ):了解SpringBoot的技術(shù)架構(gòu),SpringBoot的核心功能,SpringBoot的應(yīng)用場(chǎng)景,以及如何使用SpringBoot開發(fā)應(yīng)用程序。
2、SpringBoot快速入門:學(xué)習(xí)如何使用SpringInitializr創(chuàng)建SpringBoot應(yīng)用程序,設(shè)置SpringBoot項(xiàng)目的基本設(shè)置,以及SpringBoot應(yīng)用程序的基本功能。
3、SpringBoot組件:學(xué)習(xí)SpringBoot的核心組件,如spring-boot-starter,spring-boot-autoconfigure,spring-boot-actuator等等,以及如何使用它們。
4、SpringBoot開發(fā)技巧:學(xué)習(xí)如何在SpringBoot應(yīng)用程序中使用SpringBoot的高級(jí)功能,比如熱部署,自定義配置,日志管理等等。
5、SpringBoot運(yùn)行環(huán)境:了解SpringBoot的運(yùn)行環(huán)境,如何配置SpringBoot應(yīng)用程序,如何將SpringBoot應(yīng)用程序部署到生產(chǎn)環(huán)境,以及如何在生產(chǎn)環(huán)境中運(yùn)行SpringBoot應(yīng)用程序。
springboot數(shù)據(jù)統(tǒng)計(jì)表怎么做
在SpringBoot中實(shí)現(xiàn)數(shù)據(jù)統(tǒng)計(jì)表可以按以下步驟進(jìn)行:1.創(chuàng)建實(shí)體類:創(chuàng)建一個(gè)表示數(shù)據(jù)統(tǒng)計(jì)的實(shí)體類,通過注解定義實(shí)體類的屬性和表結(jié)構(gòu)。2.創(chuàng)建數(shù)據(jù)訪問層(DAO):使用JPA或MyBatis等框架,創(chuàng)建一個(gè)數(shù)據(jù)訪問層的接口和實(shí)現(xiàn)類,用于對(duì)數(shù)據(jù)進(jìn)行統(tǒng)計(jì)和查詢操作。3.創(chuàng)建服務(wù)層(Service):創(chuàng)建一個(gè)服務(wù)層的接口和實(shí)現(xiàn)類,處理業(yè)務(wù)邏輯,調(diào)用數(shù)據(jù)訪問層進(jìn)行數(shù)據(jù)統(tǒng)計(jì)。4.創(chuàng)建控制器層(Controller):創(chuàng)建一個(gè)控制器類,處理HTTP請(qǐng)求和響應(yīng),調(diào)用服務(wù)層進(jìn)行數(shù)據(jù)統(tǒng)計(jì)的處理,并返回統(tǒng)計(jì)結(jié)果給前端。5.創(chuàng)建前端頁面:在前端頁面中使用相應(yīng)的圖表插件(如echarts、highcharts)展示數(shù)據(jù)統(tǒng)計(jì)的結(jié)果,通過ajax請(qǐng)求后端獲取數(shù)據(jù)并展示到圖表中。6.配置路由和視圖解析器:在SpringBoot的配置文件中配置路由,將請(qǐng)求映射到對(duì)應(yīng)的控制器方法,然后配置視圖解析器,將控制器返回的數(shù)據(jù)渲染到前端頁面。7.運(yùn)行項(xiàng)目:?jiǎn)?dòng)SpringBoot項(xiàng)目,通過訪問前端頁面,在頁面上展示數(shù)據(jù)統(tǒng)計(jì)的結(jié)果。以上是實(shí)現(xiàn)SpringBoot數(shù)據(jù)統(tǒng)計(jì)表的一般步驟,具體根據(jù)項(xiàng)目需求和框架選擇可能有所不同。
OK,本文到此結(jié)束,希望對(duì)大家有所幫助。
本文鏈接:http://m.tiantaijiaoyu.cn/ruanjian/102.html