Maison  >  Article  >  Java  >  Comment exécuter Springboot après le démarrage

Comment exécuter Springboot après le démarrage

WBOY
WBOYavant
2023-06-03 11:21:39908parcourir

1. Annotation @PostConstruct

Utiliser l'annotation @PostConstruct est le moyen le plus courant. Le problème est que si la méthode exécutée prend trop de temps, le projet ne pourra pas fournir de services pendant l'exécution de la méthode.

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

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

2. Interface CommandLineRunner

Implémentez l'interface CommandLineRunner puis appelez la méthode qui doit être appelée dans la méthode run L'avantage est que lorsque la méthode est exécutée, le projet a été initialisé et les services peuvent être fournis normalement.

En même temps, cette méthode peut également accepter des paramètres et effectuer certains traitements basés sur les paramètres transmis au démarrage du projet : 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));
    }
}

3. Implémentez l'interface ApplicationRunner

Les méthodes d'implémentation d'ApplicationRunner et de CommandLineRunner sont fondamentalement similaires.

La seule différence est le format des paramètres transmis au démarrage. CommandLineRunner n'a aucune restriction sur le format des paramètres. Le format du paramètre d'interface ApplicationRunner doit être : –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());
        }
    }
}

Implémenter ApplicationListener

Implémenter l'interface ApplicationListener. et implémentez ApplicationRunner. L'interface CommandLineRunner n'affecte pas le service et peut fournir des services normalement. Faites attention aux événements surveillés, généralement ApplicationStartedEvent ou ApplicationReadyEvent. Les autres événements ne peuvent pas être injectés dans le bean.

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

5. L'ordre d'exécution des quatre méthodes

La méthode d'annotation @PostConstruct est toujours exécutée en premier

Si l'événement ApplicationStartedEvent est surveillé, il sera certainement exécuté avant CommandLineRunner et ApplicationRunner.

Si vous écoutez l'événement ApplicationReadyEvent, il sera définitivement exécuté après CommandLineRunner et ApplicationRunner.

CommandLineRunner et ApplicationRunner s'exécutent par défaut en premier. Si les deux parties spécifient @Order, elles seront exécutées par ordre de taille de @Order, le plus grand étant exécuté en premier.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer