<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                我們可以實現如下四個接口來觀察SpringBoot的啟動過程。 ``` ApplicationContextInitializer SpringApplicationRunListener ApplicationRunner CommandLineRunner ``` 演示SpringBoot啟動過程。 **1. 實現上面的4個接口** (1)*`com.exa.process.listener.MyApplicationRunner`* ```java package com.exa.process.listener; import org.springframework.boot.ApplicationArguments; import org.springframework.boot.ApplicationRunner; import org.springframework.stereotype.Component; @Component public class MyApplicationRunner implements ApplicationRunner { @Override public void run(ApplicationArguments args) throws Exception { System.out.println("ApplicationRunner——>run()"); } } ``` (2)*`com.exa.process.listener.MyCommandLineRunner`* ```java package com.exa.process.listener; import org.springframework.boot.CommandLineRunner; import org.springframework.stereotype.Component; @Component public class MyCommandLineRunner implements CommandLineRunner { @Override public void run(String... args) throws Exception { System.out.println("CommandLineRunner——>run()"); } } ``` (3)*`com.exa.process.listener.MyApplicationContextInitializer`* ```java package com.exa.process.listener; import org.springframework.context.ApplicationContextInitializer; import org.springframework.context.ConfigurableApplicationContext; /** * 監聽ConfigurableApplicationContext的啟動 */ public class MyApplicationContextInitializer implements ApplicationContextInitializer<ConfigurableApplicationContext> { @Override public void initialize(ConfigurableApplicationContext configurableApplicationContext) { System.out.println("ApplicationContextInitializer——>initialize()"); } } ``` (4)*`com.exa.process.listener.MySpringApplicationRunListener.java`* ```java package com.exa.process.listener; import org.springframework.boot.SpringApplication; import org.springframework.boot.SpringApplicationRunListener; import org.springframework.context.ConfigurableApplicationContext; import org.springframework.core.env.ConfigurableEnvironment; public class MySpringApplicationRunListener implements SpringApplicationRunListener { public MySpringApplicationRunListener(SpringApplication application, String[] args) { } @Override public void starting() { System.out.println("SpringApplicationRunListener——>starting()"); } @Override public void environmentPrepared(ConfigurableEnvironment environment) { // 可以獲取當前機器的操作系統等信息 Object mes = environment.getSystemProperties().get("os.name"); System.out.println("SpringApplicationRunListener——>environmentPrepared()---操作系統:"+mes); } @Override public void contextPrepared(ConfigurableApplicationContext context) { System.out.println("SpringApplicationRunListener——>contextPrepared()"); } @Override public void contextLoaded(ConfigurableApplicationContext context) { System.out.println("SpringApplicationRunListener——>contextLoaded()"); } @Override public void started(ConfigurableApplicationContext context) { System.out.println("SpringApplicationRunListener——>started()"); } @Override public void running(ConfigurableApplicationContext context) { System.out.println("SpringApplicationRunListener——>running()"); } @Override public void failed(ConfigurableApplicationContext context, Throwable exception) { System.out.println("SpringApplicationRunListener——>failed()"); } } ``` **2. 編寫`spring.factories`文件** 將MyApplicationContextInitializer、MySpringApplicationRunListener通過`spring.factories`注入到IoC容器中。 *`resources/META-INF/spring.factories`* ```xml # Initializers org.springframework.context.ApplicationContextInitializer=\ com.exa.process.listener.MyApplicationContextInitializer # Application Listeners org.springframework.boot.SpringApplicationRunListener=\ com.exa.process.listener.MySpringApplicationRunListener ``` **3. 運行項目后日志輸出順序如下** ``` SpringApplicationRunListener——>starting() SpringApplicationRunListener——>environmentPrepared()---操作系統:Windows 10 ApplicationContextInitializer——>initialize() SpringApplicationRunListener——>contextPrepared() SpringApplicationRunListener——>contextLoaded() SpringApplicationRunListener——>started() ApplicationRunner——>run() CommandLineRunner——>run() SpringApplicationRunListener——>running() // 由于項目并沒有運行失敗所以SpringApplicationRunListener——>failed()并沒有運行 ```
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看