________________初学springboot10

事件监听

方法一:

//新建事件监听器。 实现ApplicationListener接口

import org.springframework.context.ApplicationListener;

public class MyApplicationListener implements ApplicationListener<MyApplicationEvent> {

@Override

public void onApplicationEvent(MyApplicationEvent event) {

System.out.println("监听事件!!!!!"+event.getClass());

}

}

//新建事件类  继承ApplicationEvent 类

public class MyApplicationEvent extends ApplicationEvent {

/**

* 定义事件

*/

private static final long serialVersionUID = 1L;

public MyApplicationEvent(Object source) {

super(source);

// TODO Auto-generated constructor stub

}

}

//发布事件 

@EnableAutoConfiguration

@ComponentScan

public class App {

public static void main(String[] args) {

SpringApplication app=new SpringApplication(App.class);

app.addListeners(new MyApplicationListener());

ConfigurableApplicationContext context = app.run(args);

context.publishEvent(new MyApplicationEvent(new Object()));

context.close();

}

}

方法二,注解ApplicationLister配置到Spring容器中

不需要以下方法

//app.addListeners(new MyApplicationListener());

方法三、Application.properties 中context.listener.classes=全类名

方法四、给监听方法加@EventListener注解,所在的类要加入Spring容器

@Component

public class MyHandle {

@EventListener

public void event(MyApplicationEvent event) {//监听容器给定的事件,引用就好  ContextStopEvent

System.out.println("监听事件!!!!!"+event.getClass());

}

}

ApplicationContextInitializer 接口是在 容器refresh之前的回调

1、写一个类实现此接口

import org.springframework.context.ApplicationContextInitializer;
import org.springframework.context.ConfigurableApplicationContext;

public class MyInitializer implements ApplicationContextInitializer<ConfigurableApplicationContext> {

@Override
public void initialize(ConfigurableApplicationContext applicationContext) {
System.out.println("bean count:"+applicationContext.getBeanDefinitionCount());
}

}

2、注册 ApplicationContextInitializer  

public class App {

public static void main(String[] args) {

SpringApplication app=new SpringApplication(App.class);

//方法1️⃣app.addInitializers(new MyInitializer()); 

ConfigurableApplicationContext context=app.run(args);

context.close();

}

}

//方法2️⃣ 在application.properties配置

context.initializer.classes=com.lsq.test.MyInitializer

//方法3️⃣其他项目引用 spring.factories、、spring.factory机制

里面 ApplicationContextInitializer全类名=实现类全类名

ComandLineRunner容器启动之后的最后一步回调

可以拿到ApplicationArguments接口  启动选项中可以添加参数 ,--name=value

如果有多个,可以使用@order(number)或者ordered 接口 来控制顺序,数字越小,顺序越靠前

原文地址:https://www.cnblogs.com/qiqisx/p/9364509.html