一、java监听机制(麻烦、繁琐,不推荐)
![](https://img2022.cnblogs.com/blog/2871529/202211/2871529-20221120134814959-968375097.png)
二、SpringBoot监听机制
![](https://img2022.cnblogs.com/blog/2871529/202211/2871529-20221120135001252-1995083830.png)
三、代码实现
1-包的定义
![](https://img2022.cnblogs.com/blog/2871529/202211/2871529-20221120193839234-27212168.png)
2-listener代码块
-
1-MyApplicationContextInitializer
![](https://img2022.cnblogs.com/blog/2871529/202211/2871529-20221120194124319-150804823.png)
MyApplicationContextInitializer代码块
@Component
public class MyApplicationContextInitializer implements ApplicationContextInitializer {
@Override
public void initialize(ConfigurableApplicationContext applicationContext) {
System.out.println("ApplicationContextInitializer...Run");
}
}
-
2-MyApplicationRunListener
![](https://img2022.cnblogs.com/blog/2871529/202211/2871529-20221120230823480-1769853908.png)
MyApplicationRunListener代码块
import org.springframework.boot.ConfigurableBootstrapContext;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.SpringApplicationRunListener;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.core.env.ConfigurableEnvironment;
import org.springframework.stereotype.Component;
import java.time.Duration;
public class MyApplicationRunListener implements SpringApplicationRunListener {
//根据源码写Controller,没有这个是不可以执行下面的代码的
//下面的参数"SpringApplication application, String[] args"查看springboot的源码
public MyApplicationRunListener(SpringApplication application, String[] args) {
}
@Override
public void starting(ConfigurableBootstrapContext bootstrapContext) {
System.out.println("开始。。。");
}
@Override
public void environmentPrepared(ConfigurableBootstrapContext bootstrapContext, ConfigurableEnvironment environment) {
System.out.println("环境。。。");
}
@Override
public void contextPrepared(ConfigurableApplicationContext context) {
System.out.println("对象开始准备");
}
@Override
public void contextLoaded(ConfigurableApplicationContext context) {
System.out.println("加载ing。。。");
}
@Override
public void started(ConfigurableApplicationContext context, Duration timeTaken) {
this.started(context);
System.out.println("上下文对象加载完成。。。");
}
@Override
public void running(ConfigurableApplicationContext context) {
System.out.println("项目启动完成。。");
}
@Override
public void failed(ConfigurableApplicationContext context, Throwable exception) {
System.out.println("项目启动失败");
}
}
![](https://img2022.cnblogs.com/blog/2871529/202211/2871529-20221120231218877-934270799.png)
MyApplicationRunner代码块
@Component
public class MyApplicationRunner implements ApplicationRunner{
@Override
public void run(ApplicationArguments args) throws Exception {
System.out.println("ApplicationRunner...Runner");
System.out.println(Arrays.asList(args.getSourceArgs()));
}
}
![](https://img2022.cnblogs.com/blog/2871529/202211/2871529-20221120231421519-383751330.png)
MyCommandLineRunner代码块w
@Component
public class MyCommandLineRunner implements CommandLineRunner {
@Override
public void run(String... args) throws Exception {
System.out.println("CommandLineRunner...Run");
System.out.println(Arrays.asList(args));
}
}
四、最后执行结果
![](https://img2022.cnblogs.com/blog/2871529/202211/2871529-20221120232130822-389977806.png)
![](https://img2022.cnblogs.com/blog/2871529/202211/2871529-20221120232209910-1316889351.png)