日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

簡易版的SpringBoot是如何實現的!!!

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

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

接下來我們來分析一個Springboot的相關知識,讓我們一起開啟新篇章吧!!!rRH28資訊網——每日最新資訊28at.com

rRH28資訊網——每日最新資訊28at.com

rRH28資訊網——每日最新資訊28at.com

rRH28資訊網——每日最新資訊28at.com

 模擬實現簡易版SpringBoot

rRH28資訊網——每日最新資訊28at.com

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

模塊創建

創建一個Springboot源碼模塊,主要用來實現SpringBoot的核心編程邏輯,類似導入SpringBoot依賴。rRH28資訊網——每日最新資訊28at.com

創建一個應用模塊Demo,用來實現業務邏輯測試我們自己編寫好的Springboot代碼。rRH28資訊網——每日最新資訊28at.com

依賴導入

由于SpringBoot是依賴于Spring的也依賴SpringMVC,所以我們也得依賴Spring和SpringMVC,導入Spring與SpringMVC的相關jar。rRH28資訊網——每日最新資訊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模塊就可以類似平常一樣,隨便寫需要什么導入什么,但是得依賴于我們自己寫的SpringBoot模塊。rRH28資訊網——每日最新資訊28at.com

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

代碼編寫

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

SpringBoot模塊,效仿真正的SpringBoot項目在項目啟動類里面存在一個注解,傳入配置類,然后調用run方法即可。rRH28資訊網——每日最新資訊28at.com

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

首先我們需要去定義一個核心的注解類和一個啟動類DemoSpringApplication。rRH28資訊網——每日最新資訊28at.com

定義完這兩個類此時我們就可以去編寫Demo業務的啟動類,之前是表示@SpringBootApplication,現在通過我們自定義的注解來實現。rRH28資訊網——每日最新資訊28at.com

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

實現run方法邏輯

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

同時我們需要掃描得到Spring的相關類,同時還得利用Springmvc去進行相關操作,將DispatcherServlet加入到Tomcat中。rRH28資訊網——每日最新資訊28at.com

在run方法里面需要實現邏輯:創建一個Spring容器,創建Tomcat對象,創建DispatcherServlet對象并且和前面創建出來的Spring容器進行綁定將DispatcherServlet添加到Tomcat中,最后啟動Tomcat。rRH28資訊網——每日最新資訊28at.com

創建Spring容器

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

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

創建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,需要傳遞一個容器,然后綁定8081端口,在瀏覽器中我們就可以通過“localhost:8081/test”來訪問。rRH28資訊網——每日最新資訊28at.com

圖片圖片rRH28資訊網——每日最新資訊28at.com

rRH28資訊網——每日最新資訊28at.com

rRH28資訊網——每日最新資訊28at.com

 總結

rRH28資訊網——每日最新資訊28at.com

開篇簡單模擬一下SpringBoot的過程,后期逐步來分析一下SpringBoot中的相關源碼。rRH28資訊網——每日最新資訊28at.com

強調一點:其中大量運用Spring的相關知識,如果有不理解的地方可以提出來或者去翻閱前面的知識點。rRH28資訊網——每日最新資訊28at.com

本文鏈接:http://www.www897cc.com/showinfo-26-55277-0.html簡易版的SpringBoot是如何實現的!!!

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: ElasticSearch 的概念解析與使用方式

下一篇: 我們一起聊聊如何做程序的性能優化

標簽:
  • 熱門焦點
  • 5月iOS設備性能榜:M1 M2依舊是榜單前五

    和上個月一樣,沒有新品發布的iOS設備性能榜的上榜設備并沒有什么更替,僅僅只有跑分變化而產生的排名變動,剛剛開始的蘋果WWDC2023,推出的產品也依舊是新款Mac Pro、新款Mac Stu
  • 一文看懂為蘋果Vision Pro開發應用程序

    譯者 | 布加迪審校 | 重樓蘋果的Vision Pro是一款混合現實(MR)頭戴設備。Vision Pro結合了虛擬現實(VR)和增強現實(AR)的沉浸感。其高分辨率顯示屏、先進的傳感器和強大的處理能力
  • 如何使用JavaScript創建一只圖像放大鏡?

    譯者 | 布加迪審校 | 重樓如果您曾經瀏覽過購物網站,可能遇到過圖像放大功能。它可以讓您放大圖像的特定區域,以便瀏覽。結合這個小小的重要功能可以大大改善您網站的用戶體驗
  • 虛擬鍵盤 API 的妙用

    你是否在遇到過這樣的問題:移動設備上有一個固定元素,當激活虛擬鍵盤時,該元素被隱藏在了鍵盤下方?多年來,這一直是 Web 上的默認行為,在本文中,我們將探討這個問題、為什么會發生
  • 共享單車的故事講到哪了?

    來源丨海克財經與共享充電寶相差不多,共享單車已很久沒有被國內熱點新聞關照到了。除了一再漲價和用戶直呼用不起了。近日多家媒體再發報道稱,成都、天津、鄭州等地多個共享單
  • 一條抖音4億人圍觀 ! 這家MCN比無憂傳媒還野

    作者:Hiu 來源:互聯網品牌官01 擦邊少女空降熱搜,幕后推手曝光被網友譽為&ldquo;純欲天花板&rdquo;的女網紅井川里予,近期因為一組哥特風照片登上熱搜,引發了一場互聯網世界關于
  • 華為開發者大會2023日程公開:開設鴻蒙HarmonyOS 4體驗區

    IT之家 7 月 31 日消息,華為今日公布了 HDC.Together 開發者大會 2023 的詳細日程。整場大會將于 8 月 4 日-6 日之間舉行,屆時將發布最新一代鴻蒙 H
  • 三星顯示已開始為AR設備研發硅基LED微顯示屏

    7月18日消息,據外媒報道,隨著蘋果首款頭顯產品Vision Pro在6月份正式推出,AR/VR/MR等頭顯產品也就將成為各大公司下一個重要的競爭領域,對顯示屏這一關
  • 世界人工智能大會國際日開幕式活動在世博展覽館開啟

    30日上午,世界人工智能大會國際日開幕式活動在世博展覽館開啟,聚集國際城市代表、重量級院士專家、國際創新企業代表,共同打造人工智能交流平臺。上海市副市
Top 主站蜘蛛池模板: 鞍山市| 论坛| 米易县| 双柏县| 财经| 西贡区| 那坡县| 怀集县| 昔阳县| 雅安市| 舟曲县| 宁都县| 城口县| 阿拉尔市| 庆安县| 四会市| 平昌县| 江川县| 邮箱| 定西市| 育儿| 富蕴县| 皮山县| 天祝| 河西区| 威宁| 平塘县| 罗江县| 建昌县| 乌什县| 应城市| 甘孜| 浏阳市| 大港区| 定南县| 曲松县| 玉环县| 万盛区| 观塘区| 桦甸市| 正安县|