AVt天堂网 手机版,亚洲va久久久噜噜噜久久4399,天天综合亚洲色在线精品,亚洲一级Av无码毛片久久精品

當(dāng)前位置:首頁 > 科技  > 軟件

簡易版的SpringBoot是如何實(shí)現(xiàn)的!!!

來源: 責(zé)編: 時(shí)間:2024-01-02 09:31:40 206觀看
導(dǎo)讀目前RocketMQ總算可以告一段落了,在學(xué)習(xí)的過程中是否遇到什么難點(diǎn),前面的知識點(diǎn)是否還依稀記得,后面有時(shí)間還是需要好好復(fù)習(xí)一遍,不過總的來說還是得會使用,學(xué)習(xí)源碼是為了能夠讓你更加了解該技術(shù),在碰到問題的同時(shí)能夠更加

目前RocketMQ總算可以告一段落了,在學(xué)習(xí)的過程中是否遇到什么難點(diǎn),前面的知識點(diǎn)是否還依稀記得,后面有時(shí)間還是需要好好復(fù)習(xí)一遍,不過總的來說還是得會使用,學(xué)習(xí)源碼是為了能夠讓你更加了解該技術(shù),在碰到問題的同時(shí)能夠更加快速的發(fā)現(xiàn)和解決問題。IYe28資訊網(wǎng)——每日最新資訊28at.com

接下來我們來分析一個(gè)Springboot的相關(guān)知識,讓我們一起開啟新篇章吧!!!IYe28資訊網(wǎng)——每日最新資訊28at.com

IYe28資訊網(wǎng)——每日最新資訊28at.com

IYe28資訊網(wǎng)——每日最新資訊28at.com

IYe28資訊網(wǎng)——每日最新資訊28at.com

 模擬實(shí)現(xiàn)簡易版SpringBoot

IYe28資訊網(wǎng)——每日最新資訊28at.com

SpringBoot作為目前最流行的框架之一,同時(shí)是每個(gè)程序員必須掌握的知識,其提供了豐富的功能模塊和開箱即用的特性,極大地提高了開發(fā)效率和降低了學(xué)習(xí)成本,使得開發(fā)人員能夠更專注于業(yè)務(wù)邏輯的實(shí)現(xiàn),而無需過多關(guān)注底層框架的配置和集成。IYe28資訊網(wǎng)——每日最新資訊28at.com

模塊創(chuàng)建

創(chuàng)建一個(gè)Springboot源碼模塊,主要用來實(shí)現(xiàn)SpringBoot的核心編程邏輯,類似導(dǎo)入SpringBoot依賴。IYe28資訊網(wǎng)——每日最新資訊28at.com

創(chuàng)建一個(gè)應(yīng)用模塊Demo,用來實(shí)現(xiàn)業(yè)務(wù)邏輯測試我們自己編寫好的Springboot代碼。IYe28資訊網(wǎng)——每日最新資訊28at.com

依賴導(dǎo)入

由于SpringBoot是依賴于Spring的也依賴SpringMVC,所以我們也得依賴Spring和SpringMVC,導(dǎo)入Spring與SpringMVC的相關(guān)jar。IYe28資訊網(wǎng)——每日最新資訊28at.com

<dependencies>    <dependency>        <groupId>org.springframework</groupId>        <artifactId>spring-context</artifactId>        <version>5.3.18</version>    </dependency>    <dependency>        <groupId>org.springframework</groupId>        <artifactId>spring-web</artifactId>        <version>5.3.18</version>    </dependency>    <dependency>        <groupId>org.springframework</groupId>        <artifactId>spring-webmvc</artifactId>        <version>5.3.18</version>    </dependency>    <dependency>        <groupId>javax.servlet</groupId>        <artifactId>javax.servlet-api</artifactId>        <version>4.0.1</version>    </dependency>    <dependency>        <groupId>org.apache.tomcat.embed</groupId>        <artifactId>tomcat-embed-core</artifactId>        <version>9.0.60</version>    </dependency></dependencies>

而Demo模塊就可以類似平常一樣,隨便寫需要什么導(dǎo)入什么,但是得依賴于我們自己寫的SpringBoot模塊。IYe28資訊網(wǎng)——每日最新資訊28at.com

<dependencies>    <dependency>        <groupId>com.simulate.example</groupId>        <artifactId>springboot</artifactId>        <version>1.0-SNAPSHOT</version>    </dependency></dependencies>

代碼編寫

Demo模塊的代碼直接就正常編寫邏輯,定義一個(gè)Controller,Service一個(gè)接口請求方法執(zhí)行“/test”。IYe28資訊網(wǎng)——每日最新資訊28at.com

SpringBoot模塊,效仿真正的SpringBoot項(xiàng)目在項(xiàng)目啟動類里面存在一個(gè)注解,傳入配置類,然后調(diào)用run方法即可。IYe28資訊網(wǎng)——每日最新資訊28at.com

/** * @author dream */@Target(ElementType.TYPE)@Retention(RetentionPolicy.RUNTIME)@Configuration@ComponentScanpublic @interface DemoSpringBootApplication {}public class MySpringApplication {    public static void run(Class clazz){    }}

首先我們需要去定義一個(gè)核心的注解類和一個(gè)啟動類DemoSpringApplication。IYe28資訊網(wǎng)——每日最新資訊28at.com

定義完這兩個(gè)類此時(shí)我們就可以去編寫Demo業(yè)務(wù)的啟動類,之前是表示@SpringBootApplication,現(xiàn)在通過我們自定義的注解來實(shí)現(xiàn)。IYe28資訊網(wǎng)——每日最新資訊28at.com

@DemoSpringBootApplicationpublic class MyApplication {     public static void main(String[] args) {        MySpringApplication.run(MyApplication.class);    }}

實(shí)現(xiàn)run方法邏輯

我想著當(dāng)run方法結(jié)束后,我們就可以在瀏覽器里面訪問我們之前定義好的test路徑,那么run方法必定會去啟動Tomcat服務(wù)才能夠在瀏覽器里面訪問,所在方法里面必須去啟動一個(gè)Tomcat服務(wù)。IYe28資訊網(wǎng)——每日最新資訊28at.com

同時(shí)我們需要掃描得到Spring的相關(guān)類,同時(shí)還得利用Springmvc去進(jìn)行相關(guān)操作,將DispatcherServlet加入到Tomcat中。IYe28資訊網(wǎng)——每日最新資訊28at.com

在run方法里面需要實(shí)現(xiàn)邏輯:創(chuàng)建一個(gè)Spring容器,創(chuàng)建Tomcat對象,創(chuàng)建DispatcherServlet對象并且和前面創(chuàng)建出來的Spring容器進(jìn)行綁定將DispatcherServlet添加到Tomcat中,最后啟動Tomcat。IYe28資訊網(wǎng)——每日最新資訊28at.com

創(chuàng)建Spring容器

public static void run(Class clazz) {  AnnotationConfigWebApplicationContext applicationContext = new AnnotationConfigWebApplicationContext();    applicationContext.register(clazz);     applicationContext.refresh(); }

創(chuàng)建AnnotationConfigWebApplicationContext容易傳入class類就表示該clazz為配置類,Spring就會去掃描類上的相關(guān)注解,這時(shí)候就會掃描到我們自己寫好的@DemoSpringBootApplication注解,然后該注解內(nèi)存存在@ComponentScan注解等都會一并去掃描實(shí)現(xiàn),ComponentScan就是去掃描路徑找到bean對象,如果沒有指定路徑默認(rèn)就是配置類所在包路徑,就會將Demo的Controller類掃描到Spring中,并將訪問地址掃描到其中。IYe28資訊網(wǎng)——每日最新資訊28at.com

創(chuàng)建Tomcat對象與DispatcherServlet并綁定啟動

public static void startTomcat(WebApplicationContext applicationContext){    Tomcat tomcat = new Tomcat();    Server server = tomcat.getServer();    Service service = server.findService("Tomcat");    Connector connector = new Connector();    connector.setPort(8081);    Engine engine = new StandardEngine();    engine.setDefaultHost("localhost");    Host host = new StandardHost();    host.setName("localhost");    String contextPath = "";    Context context = new StandardContext();    context.setPath(contextPath);    context.addLifecycleListener(new Tomcat.FixContextListener());    host.addChild(context);    engine.addChild(host);    service.setContainer(engine);    service.addConnector(connector);    tomcat.addServlet(contextPath, "dispatcher", new DispatcherServlet(applicationContext));    context.addServletMappingDecoded("/*", "dispatcher");    try {        tomcat.start();    } catch (LifecycleException e) {        e.printStackTrace();    }}

startTomcat方法就是啟動Tomcat,需要傳遞一個(gè)容器,然后綁定8081端口,在瀏覽器中我們就可以通過“l(fā)ocalhost:8081/test”來訪問。IYe28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片IYe28資訊網(wǎng)——每日最新資訊28at.com

IYe28資訊網(wǎng)——每日最新資訊28at.com

IYe28資訊網(wǎng)——每日最新資訊28at.com

 總結(jié)

IYe28資訊網(wǎng)——每日最新資訊28at.com

開篇簡單模擬一下SpringBoot的過程,后期逐步來分析一下SpringBoot中的相關(guān)源碼。IYe28資訊網(wǎng)——每日最新資訊28at.com

強(qiáng)調(diào)一點(diǎn):其中大量運(yùn)用Spring的相關(guān)知識,如果有不理解的地方可以提出來或者去翻閱前面的知識點(diǎn)。IYe28資訊網(wǎng)——每日最新資訊28at.com

本文鏈接:http://www.tebozhan.com/showinfo-26-55280-0.html簡易版的SpringBoot是如何實(shí)現(xiàn)的!!!

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。郵件:2376512515@qq.com

上一篇: 我們一起聊聊如何做程序的性能優(yōu)化

下一篇: 我們一起聊聊如何做程序的性能優(yōu)化

標(biāo)簽:
  • 熱門焦點(diǎn)
  • 容量越大越不壞?24萬塊硬盤故障率報(bào)告公布 這些產(chǎn)品零故障

    8月5日消息,云存儲服務(wù)商Backblaze發(fā)布了最新的硬盤故障率報(bào)告,年故障率有所上升。Backblaze發(fā)布的硬盤季度統(tǒng)計(jì)數(shù)據(jù),其中包括故障率等重要方面。這些結(jié)
  • 印度登月最關(guān)鍵一步!月船三號今晚進(jìn)入環(huán)月軌道

    8月5日消息,據(jù)印度官方消息,月船三號將于北京時(shí)間今晚21時(shí)30分左右開始近月制動進(jìn)入環(huán)月軌道。這是該探測器能夠成功的最關(guān)鍵步驟之一,如果成功將開始圍
  • 把LangChain跑起來的三個(gè)方法

    使用LangChain開發(fā)LLM應(yīng)用時(shí),需要機(jī)器進(jìn)行GLM部署,好多同學(xué)第一步就被勸退了,那么如何繞過這個(gè)步驟先學(xué)習(xí)LLM模型的應(yīng)用,對Langchain進(jìn)行快速上手?本片講解3個(gè)把LangChain跑起來
  • 微信語音大揭秘:為什么禁止轉(zhuǎn)發(fā)?

    大家好,我是你們的小米。今天,我要和大家聊一個(gè)有趣的話題:為什么微信語音不可以轉(zhuǎn)發(fā)?這是一個(gè)我們經(jīng)常在日常使用中遇到的問題,也是一個(gè)讓很多人好奇的問題。讓我們一起來揭開這
  • 使用LLM插件從命令行訪問Llama 2

    最近的一個(gè)大新聞是Meta AI推出了新的開源授權(quán)的大型語言模型Llama 2。這是一項(xiàng)非常重要的進(jìn)展:Llama 2可免費(fèi)用于研究和商業(yè)用途。(幾小時(shí)前,swyy發(fā)現(xiàn)它已從LLaMA 2更名為Lla
  • 一文掌握 Golang 模糊測試(Fuzz Testing)

    模糊測試(Fuzz Testing)模糊測試(Fuzz Testing)是通過向目標(biāo)系統(tǒng)提供非預(yù)期的輸入并監(jiān)視異常結(jié)果來發(fā)現(xiàn)軟件漏洞的方法。可以用來發(fā)現(xiàn)應(yīng)用程序、操作系統(tǒng)和網(wǎng)絡(luò)協(xié)議等中的漏洞或
  • iQOO 11S新品發(fā)布會

    iQOO將在7月4日19:00舉行新品發(fā)布會,推出杭州亞運(yùn)會電競賽事官方用機(jī)iQOO 11S。
  • OPPO K11搭載長壽版100W超級閃充:26分鐘充滿100%

    據(jù)此前官方宣布,OPPO將于7月25日也就是今天下午14:30舉辦新品發(fā)布會,屆時(shí)全新的OPPO K11將正式與大家見面,將主打旗艦影像,和同檔位競品相比,其最大的賣
  • Counterpoint :OPPO雙旗艦戰(zhàn)略全面落地 高端產(chǎn)品銷量增長22%

    2023年6月30日,全球行業(yè)分析機(jī)構(gòu)Counterpoint Research發(fā)布的《中國智能手機(jī)高端市場白皮書》顯示,中國智能手機(jī)品牌正在尋求高質(zhì)量發(fā)展,中國高端智能
Top