赞
踩
上述的四种监听器按照使用的方式可以分为两种:
@Component
public class MyCommandLineRunner implements CommandLineRunner {
@Override
public void run(String... args) throws Exception {
System.out.println("MyCommandLineRunner...run");
System.out.println(Arrays.asList(args));
}
}
@Component
public class MyApplicationRunner implements ApplicationRunner {
@Override
public void run(ApplicationArguments args) throws Exception {
System.out.println("MyApplicationRunner...run");
System.out.println(Arrays.asList(args.getSourceArgs()));
}
}
项目启动时,会自动执行上述的内容。
日常开发中有可能需要实现项目启动后执行的功能,比如特殊数据处理,权限控制、缓存预热等
按照使用可以分为单个实现类和多个实现类,
@Component
@Order(3)
public class MyCommandLineRunner implements CommandLineRunner {
@Override
public void run(String... args) throws Exception {
System.out.println("MyCommandLineRunner...run");
System.out.println(Arrays.asList(args));
}
}
@Component
@Order(2)
public class MyCommandLineRunner1 implements CommandLineRunner {
@Override
public void run(String... args) throws Exception {
System.out.println("MyCommandLineRunner1...run1");
System.out.println(Arrays.asList(args));
}
}
@Component
@Order(1)
public class MyCommandLineRunner2 implements CommandLineRunner {
@Override
public void run(String... args) throws Exception {
System.out.println("MyCommandLineRunner2...run2");
System.out.println(Arrays.asList(args));
}
}
执行结果:
注解@Order的执行级别是按照1最优先执行,后面依次执行。
spring容器启动完成之后,就会紧接着执行这个接口实现类的run方法。
run方法的参数: ApplicationArguments可以获取到当前项目执行的命令参数。(比如把这个项目打成jar执行的时候,带的参数可以通过ApplicationArguments获取到)
若有多个代码段需要执行,可用@Order注解设置执行的顺序。
目前不去细研究,有兴趣可以看这篇博客:Springboot扩展点之ApplicationContextInitializer
详细内容看这篇博客:SpringApplicationRunListeners 监听器执
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。