亚洲视频二区_亚洲欧洲日本天天堂在线观看_日韩一区二区在线观看_中文字幕不卡一区

公告:魔扣目錄網(wǎng)為廣大站長提供免費(fèi)收錄網(wǎng)站服務(wù),提交前請做好本站友鏈:【 網(wǎng)站目錄:http://www.430618.com 】, 免友鏈快審服務(wù)(50元/站),

點(diǎn)擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

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

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

接下來我們來分析一個(gè)Springboot的相關(guān)知識,讓我們一起開啟新篇章吧!!!

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

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

模塊創(chuàng)建

創(chuàng)建一個(gè)Springboot源碼模塊,主要用來實(shí)現(xiàn)SpringBoot的核心編程邏輯,類似導(dǎo)入SpringBoot依賴。

創(chuàng)建一個(gè)應(yīng)用模塊Demo,用來實(shí)現(xiàn)業(yè)務(wù)邏輯測試我們自己編寫好的Springboot代碼。

依賴導(dǎo)入

由于SpringBoot是依賴于Spring的也依賴SpringMVC,所以我們也得依賴Spring和SpringMVC,導(dǎo)入Spring與SpringMVC的相關(guān)jar。

<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模塊。

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

代碼編寫

Demo模塊的代碼直接就正常編寫邏輯,定義一個(gè)Controller,Service一個(gè)接口請求方法執(zhí)行“/test”。

SpringBoot模塊,效仿真正的SpringBoot項(xiàng)目在項(xiàng)目啟動類里面存在一個(gè)注解,傳入配置類,然后調(diào)用run方法即可。

/**
 * @author dream
 */
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Configuration
@ComponentScan
public @interface DemoSpringBootApplication {}


public class MySpringApplication {
    public static void run(Class clazz){


    }
}

首先我們需要去定義一個(gè)核心的注解類和一個(gè)啟動類DemoSpringApplication。

定義完這兩個(gè)類此時(shí)我們就可以去編寫Demo業(yè)務(wù)的啟動類,之前是表示@SpringBootApplication,現(xiàn)在通過我們自定義的注解來實(shí)現(xiàn)。

@DemoSpringBootApplication
public 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ù)。

同時(shí)我們需要掃描得到Spring的相關(guān)類,同時(shí)還得利用Springmvc去進(jìn)行相關(guān)操作,將DispatcherServlet加入到Tomcat中。

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

創(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中,并將訪問地址掃描到其中。

創(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端口,在瀏覽器中我們就可以通過“localhost:8081/test”來訪問。

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

 

 總結(jié)

開篇簡單模擬一下SpringBoot的過程,后期逐步來分析一下SpringBoot中的相關(guān)源碼。

強(qiáng)調(diào)一點(diǎn):其中大量運(yùn)用Spring的相關(guān)知識,如果有不理解的地方可以提出來或者去翻閱前面的知識點(diǎn)。

分享到:
標(biāo)簽:SpringBoot
用戶無頭像

網(wǎng)友整理

注冊時(shí)間:

網(wǎng)站:5 個(gè)   小程序:0 個(gè)  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨(dú)大挑戰(zhàn)2018-06-03

數(shù)獨(dú)一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學(xué)四六

運(yùn)動步數(shù)有氧達(dá)人2018-06-03

記錄運(yùn)動步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績評定2018-06-03

通用課目體育訓(xùn)練成績評定