Le contenu de cet article est une introduction à CommandLineRunner et ApplicationRunner. Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer.
CommandLineRunner et ApplicationRunner sont des interfaces fournies par Spring Boot. Elles ont toutes deux une méthode run(). Tous les beans qui les implémentent seront automatiquement appelés après le démarrage du service Spring Boot.
Grâce à cette fonctionnalité, ils constituent un endroit idéal pour effectuer un travail d'initialisation ou écrire du code de test.
CommandLineRunner
Utiliser l'application pour implémenter
Après avoir créé un nouveau projet, pour plus de simplicité, nous utilisons directement la classe Application pour implémenter l'interface CommandLineRunner Annotations pour cette classe @SpringBootApplication la configurera automatiquement pour nous.
package cn.examplecode.sb2runner; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.boot.CommandLineRunner; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class Sb2runnerApplication implements CommandLineRunner { private static Logger logger = LoggerFactory.getLogger(Sb2runnerApplication.class); public static void main(String[] args) { SpringApplication.run(Sb2runnerApplication.class, args); } @Override public void run(String... args) throws Exception { logger.info("服务已启动,执行command line runner。"); for (int i = 0; i <p>Ensuite, nous démarrons directement le service, vérifions le journal comme suit et constatons que la méthode run() est exécutée normalement : </p><pre class="brush:php;toolbar:false">Tomcat started on port(s): 8080 (http) with context path '' Started Sb2runnerApplication in 2.204 seconds (JVM running for 3.161) 服务已启动,执行command line runner。
Tomcat started on port(s): 8080 (http) with context path '' Started Sb2runnerApplication in 1.888 seconds (JVM running for 2.41) 服务已启动,执行command line runner。 args[0]: --param=sth
Passage des paramètres de ligne de commande
Nous avons parlé d'un des avantages majeurs de l'utilisation de Spring Démarrer avant Autrement dit, le projet peut être empaqueté directement dans un package jar sans le déployer séparément. Après l'empaquetage dans un package jar, vous pouvez directement exécuter le package jar pour démarrer le service. De cette façon, lors de l'exécution du package jar, nous pouvons transmettre les paramètres de ligne de commande et laisser CommandLineRunner recevoir les paramètres. Ce scénario est particulièrement courant sur les serveurs. Par exemple, si nous voulons effectuer une opération sans l'exposer au monde extérieur, nous pouvons utiliser CommandLineRunner comme point d'entrée pour l'opération. Nous allons maintenant créer un package jar à démontrer.@Component @Order(1) public class CommandRunner1 implements CommandLineRunner { private static Logger logger = LoggerFactory.getLogger(CommandRunner1.class); @Override public void run(String... args) throws Exception { logger.info("执行第一个command line runner..."); } } @Component @Order(2) public class CommandRunner2 implements CommandLineRunner { private static Logger logger = LoggerFactory.getLogger(CommandRunner2.class); @Override public void run(String... args) throws Exception { logger.info("执行第二个command line runner..."); } } @Component @Order(3) public class CommandRunner3 implements CommandLineRunner { private static Logger logger = LoggerFactory.getLogger(CommandRunner3.class); @Override public void run(String... args) throws Exception { logger.info("执行第三个command line runner..."); } }
Tomcat started on port(s): 8080 (http) with context path '' Started Sb2runnerApplication in 1.764 seconds (JVM running for 2.292) 执行第一个command line runner... 执行第二个command line runner... 执行第三个command line runner...
@Component public class ApplicationRunner1 implements ApplicationRunner { private static Logger logger = LoggerFactory.getLogger(ApplicationRunner1.class); @Override public void run(ApplicationArguments args) throws Exception { logger.info("执行application runner..."); logger.info("获取到参数: " + args.getOptionValues("param")); } }
Résumé
Qu'il s'agisse de CommandLineRunner ou d'ApplicationRunner, leur but est d'effectuer certaines opérations après le démarrage du service. Si vous devez obtenir des paramètres de ligne de commande, il est recommandé d'utiliser ApplicationRunner. Un autre scénario est que nous devons effectuer une opération sur le serveur, telle que modifier les données utilisateur de la base de données, mais que nous ne trouvons pas d'entrée d'exécution appropriée, alors c'est leur scénario d'utilisation idéal.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!