Menggunakan anotasi @PostConstruct ialah cara yang paling biasa ialah jika kaedah yang dilaksanakan mengambil masa terlalu lama, projek tidak akan dapat menyediakan perkhidmatan semasa pelaksanaan. kaedah.
@Component public class StartInit { // // @Autowired 可以注入bean // ISysUserService userService; @PostConstruct public void init() throws InterruptedException { Thread.sleep(10*1000);//这里如果方法执行过长会导致项目一直无法提供服务 System.out.println(123456); } }
Laksanakan antara muka CommandLineRunner dan kemudian panggil kaedah yang perlu dipanggil dalam kaedah run Kelebihannya ialah apabila kaedah dilaksanakan, projek telah dimulakan dan perkhidmatan boleh disediakan seperti biasa.
Pada masa yang sama, kaedah ini juga boleh menerima parameter, dan boleh melakukan beberapa pemprosesan berdasarkan parameter yang diluluskan semasa projek dimulakan: java -jar demo.jar arg1 arg2 arg3.
@Component public class CommandLineRunnerImpl implements CommandLineRunner { @Override public void run(String... args) throws Exception { System.out.println(Arrays.toString(args)); } }
Kaedah pelaksanaan ApplicationRunner dan CommandLineRunner pada asasnya adalah serupa.
Satu-satunya perbezaan ialah format parameter yang diluluskan pada permulaan CommandLineRunner tidak mempunyai sebarang sekatan pada format parameter Format parameter antara muka ApplicationRunner mestilah: –key=value
@Component public class ApplicationRunnerImpl implements ApplicationRunner { @Override public void run(ApplicationArguments args) throws Exception { Set<String> optionNames = args.getOptionNames(); for (String optionName : optionNames) { List<String> values = args.getOptionValues(optionName); System.out.println(values.toString()); } } }
Melaksanakan antara muka ApplicationListener dan melaksanakan antara muka ApplicationRunner dan CommandLineRunner tidak menjejaskan perkhidmatan dan boleh menyediakan perkhidmatan secara normal Beri perhatian kepada acara yang dipantau, biasanya ApplicationStartedEvent atau ApplicationReadyEvent mungkin tidak disuntik ke dalam kacang.
@Component public class ApplicationListenerImpl implements ApplicationListener<ApplicationStartedEvent> { @Override public void onApplicationEvent(ApplicationStartedEvent event) { System.out.println("listener"); } }
Kaedah anotasi @PostConstruct sentiasa dilaksanakan dahulu
Jika acara ApplicationStartedEvent didengari, ia pasti akan berlaku sebelum ini pelaksanaan CommandLineRunner dan ApplicationRunner.
Jika anda mendengar acara ApplicationReadyEvent, ia pasti akan dilaksanakan selepas CommandLineRunner dan ApplicationRunner.
CommandLineRunner dan ApplicationRunner lalai kepada ApplicationRunner melaksanakan terlebih dahulu Jika kedua-dua pihak menyatakan @Order, mereka akan dilaksanakan mengikut saiz @Order, dengan yang lebih besar dilaksanakan terlebih dahulu.
Atas ialah kandungan terperinci Bagaimana untuk melaksanakan Springboot selepas permulaan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!