HM-SpringBoot2.7【SpringBoot监听机制】
1
(1)
1 package com.haifei.springboot12listener.listener; 2 3 import org.springframework.context.ApplicationContextInitializer; 4 import org.springframework.context.ConfigurableApplicationContext; 5 import org.springframework.stereotype.Component; 6 7 @Component //注册到spring的IOC容器中 8 public class MyApplicationContextInitializer implements ApplicationContextInitializer { 9 10 @Override 11 public void initialize(ConfigurableApplicationContext configurableApplicationContext) { 12 System.out.println("ApplicationContextInitializer.....initialize...."); 13 } 14 15 }
1 package com.haifei.springboot12listener.listener; 2 3 import org.springframework.boot.ConfigurableBootstrapContext; 4 import org.springframework.boot.SpringApplicationRunListener; 5 import org.springframework.context.ConfigurableApplicationContext; 6 import org.springframework.core.env.ConfigurableEnvironment; 7 import org.springframework.stereotype.Component; 8 9 @Component 10 public class MySpringApplicationRunListener implements SpringApplicationRunListener { 11 12 @Override 13 public void starting(ConfigurableBootstrapContext bootstrapContext) { 14 System.out.println("starting...项目启动中"); 15 } 16 17 /*@Override 18 public void starting() { //已过时 19 20 }*/ 21 22 @Override 23 public void environmentPrepared(ConfigurableBootstrapContext bootstrapContext, ConfigurableEnvironment environment) { 24 System.out.println("environmentPrepared...环境对象开始准备"); 25 } 26 27 /*@Override 28 public void environmentPrepared(ConfigurableEnvironment environment) { //已过时 29 30 }*/ 31 32 @Override 33 public void contextPrepared(ConfigurableApplicationContext context) { 34 System.out.println("contextPrepared...上下文对象开始准备"); 35 } 36 37 @Override 38 public void contextLoaded(ConfigurableApplicationContext context) { 39 System.out.println("contextLoaded...上下文对象开始加载"); 40 } 41 42 @Override 43 public void started(ConfigurableApplicationContext context) { 44 System.out.println("started...上下文对象加载完成"); 45 } 46 47 @Override 48 public void running(ConfigurableApplicationContext context) { 49 System.out.println("running...项目启动完成,开始运行"); 50 } 51 52 @Override 53 public void failed(ConfigurableApplicationContext context, Throwable exception) { 54 System.out.println("failed...项目启动失败"); 55 } 56 }
1 package com.haifei.springboot12listener.listener; 2 3 import org.springframework.boot.CommandLineRunner; 4 import org.springframework.stereotype.Component; 5 6 import java.util.Arrays; 7 8 /** 9 * 利用注解@Component将该实现类MyCommandLineRunner注册到spring的IOC容器中,即可执行 10 * 当项目启动后执行run() 11 */ 12 @Component 13 public class MyCommandLineRunner implements CommandLineRunner { 14 15 @Override 16 public void run(String... args) throws Exception { 17 System.out.println("CommandLineRunner...."); 18 System.out.println(Arrays.asList(args)); 19 } 20 21 }
1 package com.haifei.springboot12listener.listener; 2 3 import org.springframework.boot.ApplicationArguments; 4 import org.springframework.boot.ApplicationRunner; 5 import org.springframework.stereotype.Component; 6 7 import java.util.Arrays; 8 9 /** 10 * 利用注解@Component将该实现类MyCommandLineRunner注册到spring的IOC容器中,即可执行 11 * 当项目启动后执行run() 12 * 13 * 应用场景:redis缓存预热 14 */ 15 @Component 16 public class MyApplicationRunner implements ApplicationRunner { 17 18 @Override 19 public void run(ApplicationArguments args) throws Exception { 20 System.out.println("ApplicationRunner....."); 21 System.out.println(Arrays.asList(args.getSourceArgs())); 22 } 23 24 }
1 package com.haifei.springboot12listener; 2 3 import org.springframework.boot.SpringApplication; 4 import org.springframework.boot.autoconfigure.SpringBootApplication; 5 6 @SpringBootApplication 7 public class Springboot12ListenerApplication { 8 9 public static void main(String[] args) { 10 SpringApplication.run(Springboot12ListenerApplication.class, args); 11 } 12 13 }
(2)
(3)
1 org.springframework.context.ApplicationContextInitializer=com.haifei.springboot12listener.listener.MyApplicationContextInitializer
(4)
1 org.springframework.context.ApplicationContextInitializer=com.haifei.springboot12listener.listener.MyApplicationContextInitializer 2 3 org.springframework.boot.SpringApplicationRunListener=com.haifei.springboot12listener.listener.MySpringApplicationRunListener
(5)
1 package com.haifei.springboot12listener.listener; 2 3 import org.springframework.boot.ConfigurableBootstrapContext; 4 import org.springframework.boot.SpringApplication; 5 import org.springframework.boot.SpringApplicationRunListener; 6 import org.springframework.context.ConfigurableApplicationContext; 7 import org.springframework.core.env.ConfigurableEnvironment; 8 import org.springframework.stereotype.Component; 9 10 //@Component 11 public class MySpringApplicationRunListener implements SpringApplicationRunListener { 12 13 //提供构造方法 14 public MySpringApplicationRunListener(SpringApplication application, String[] args){ 15 16 } 17 18 @Override 19 public void starting(ConfigurableBootstrapContext bootstrapContext) { 20 System.out.println("starting...项目启动中"); 21 } 22 23 /*@Override 24 public void starting() { //已过时 25 26 }*/ 27 28 @Override 29 public void environmentPrepared(ConfigurableBootstrapContext bootstrapContext, ConfigurableEnvironment environment) { 30 System.out.println("environmentPrepared...环境对象开始准备"); 31 } 32 33 /*@Override 34 public void environmentPrepared(ConfigurableEnvironment environment) { //已过时 35 36 }*/ 37 38 @Override 39 public void contextPrepared(ConfigurableApplicationContext context) { 40 System.out.println("contextPrepared...上下文对象开始准备"); 41 } 42 43 @Override 44 public void contextLoaded(ConfigurableApplicationContext context) { 45 System.out.println("contextLoaded...上下文对象开始加载"); 46 } 47 48 @Override 49 public void started(ConfigurableApplicationContext context) { 50 System.out.println("started...上下文对象加载完成"); 51 } 52 53 @Override 54 public void running(ConfigurableApplicationContext context) { 55 System.out.println("running...项目启动完成,开始运行"); 56 } 57 58 @Override 59 public void failed(ConfigurableApplicationContext context, Throwable exception) { 60 System.out.println("failed...项目启动失败"); 61 } 62 }
2 springboot中的事件(源码)
springboot的事件实质就是对java事件的封装