Home > Java > javaTutorial > body text

How to execute Springboot after startup

WBOY
Release: 2023-06-03 11:21:39
forward
843 people have browsed it

1. Annotation @PostConstruct

Using the annotation @PostConstruct is the most common way. The problem is that if the executed method takes too long, the project will not be able to provide services during the execution of the method.

@Component
public class StartInit {
//
//    @Autowired   可以注入bean
//    ISysUserService userService;

    @PostConstruct
    public void init() throws InterruptedException {
        Thread.sleep(10*1000);//这里如果方法执行过长会导致项目一直无法提供服务
        System.out.println(123456);
    }
}
Copy after login

2. CommandLineRunner interface

Implement the CommandLineRunner interface and then call the method that needs to be called in the run method. The advantage is that when the method is executed, the project has been initialized and services can be provided normally. .

At the same time, this method can also accept parameters, and can perform some processing based on the parameters passed in when the project is started: 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));
    }
}
Copy after login

3. Implement the ApplicationRunner interface

The implementation methods of ApplicationRunner and CommandLineRunner are basically similar.

The only difference is the format of the parameters passed at startup. CommandLineRunner has no restrictions on the parameter format. The ApplicationRunner interface parameter format must be: –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());
        }
    }
}
Copy after login

4. Implement ApplicationListener

Implementing the interface ApplicationListener method and implementing the ApplicationRunner and CommandLineRunner interfaces do not affect the service and can provide services normally. Pay attention to the monitored events, usually ApplicationStartedEvent or ApplicationReadyEvent. Other events may not be injected into the bean.

@Component
public class ApplicationListenerImpl implements ApplicationListener<ApplicationStartedEvent> {
    @Override
    public void onApplicationEvent(ApplicationStartedEvent event) {
        System.out.println("listener");
    }
}
Copy after login

5. The execution order of the four methods

The annotation method @PostConstruct is always executed first

If the ApplicationStartedEvent event is monitored, it will definitely be before the CommandLineRunner and ApplicationRunner implement.

If you are listening to the ApplicationReadyEvent event, it will definitely be executed after CommandLineRunner and ApplicationRunner.

CommandLineRunner and ApplicationRunner default to ApplicationRunner executing first. If both parties specify @Order, they will be executed in order of size of @Order, with the larger one executed first.

The above is the detailed content of How to execute Springboot after startup. For more information, please follow other related articles on the PHP Chinese website!

Related labels:
source:yisu.com
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!