<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>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                [TOC] # 簡介 有時候需要在Springboot啟動后執行某操作,實現ApplicationRunner和CommandLineRunner接口(都有run方法)就可以解決這個問題。 所有實現這兩個接口的,如果要執行一系列操作,可以通過實現Ordered接口或用Order注解來指定執行順序(默認從小到大開始執行)。 SpringBoot應用啟動成功以后就會callRunners方法,方法中調用ApplicationRunner和CommandLineRunner接口的run方法,只在啟動成功以后**調用一次**。 所以,在這基礎上就可以實現相當于開機自啟的一個操作,具體執行的邏輯代碼就看在應用啟動后需要做什么事情了 # ApplicationRunner 實現ApplicationRunner接口,重寫run方法,方法參數是ApplicationArguments,解析封裝過后的args參數 通過該對象既可以拿到原始命令行參數,也可以拿到解析后的參數,對應方法寫在下面的代碼里了。其中@Order中的值指定了執行順序,值小的先執行。默認值是Integer.MAX\_VALUE; ~~~ import java.util.Arrays; import java.util.Set; import org.springframework.boot.ApplicationArguments; import org.springframework.boot.ApplicationRunner; import org.springframework.core.annotation.Order; import org.springframework.stereotype.Component; @Component @Order(1) public class MyApplicationRunner implements ApplicationRunner { @Override public void run(ApplicationArguments args) throws Exception { System.out.println("====================MyApplicationRunner================"); System.out.println("order值: 1"); System.out.println("原始參數:"+Arrays.asList(args.getSourceArgs())); Set<String> keys = args.getOptionNames(); for (String key : keys) { System.out.println("解析后的key: ["+key+"] value: "+args.getOptionValues(key)); } System.out.println("無OptionName的參數: "+args.getNonOptionArgs()); System.out.println("======================================================="); } } ~~~ 啟動項目,在SpringApplication.run()方法執行的最后,就會callRunners 至于參數,如下,后面兩個參數只是為了測試隨便加的,無意義,除了在編碼工具里添加命令行參數,也可以在項目打包以后,啟動的時候在`java -jar`后面直接加,是一樣的 ~~~ Program arguments: --spring.config.location=file:E:\AllWorkSpace\custom.properties --key haha ~~~ # CommandLineRunner 同樣的實現CommandLineRunner接口,重寫run方法,方法參數是原始args參數。上面MyApplicationRunner的order值指定是1,這里MyCommandLineRunner的order值指定為2,那么前者會先執行 ~~~ import java.util.Arrays; import org.springframework.boot.CommandLineRunner; import org.springframework.core.annotation.Order; import org.springframework.stereotype.Component; @Component @Order(2) public class MyCommandLineRunner implements CommandLineRunner { @Override public void run(String... args) throws Exception { // TODO Auto-generated method stub System.out.println("====================MyCommandLineRunner================"); System.out.println("order值: 2"); System.out.println("原始參數: "+Arrays.asList(args)); System.out.println("======================================================="); } } ~~~ 兩種方法用法可以說是一樣的,區別只在于方法的參數,一個是經過解析后的,一個是原始的命令行參數,具體用哪個,可看實際情況定奪。
                  <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>

                              哎呀哎呀视频在线观看