Maison > Java > javaDidacticiel > le corps du texte

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

WBOY
Libérer: 2023-06-03 11:21:39
avant
930 Les gens l'ont consulté

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);
    }
}
Copier après la connexion

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));
    }
}
Copier après la connexion

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());
        }
    }
}
Copier après la connexion

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");
    }
}
Copier après la connexion

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!

Étiquettes associées:
source:yisu.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal