ContextRefreshedEvent 未在 AnnotationConfigApplicationContext 加载时触发
ContextRefreshedEvent is not triggring on AnnotationConfigApplicationContext loading
我创建了 Spring 应用程序,并且正在独立 Java 应用程序中加载应用程序上下文。
我的代码如下
public class Application {
public static void main(String[] args) {
ApplicationContext applicationContext = new AnnotationConfigApplicationContext(Config.class);
}
}
我想在应用程序启动前复制内存数据库中的一些数据。如果我将代码放在 ApplicationContext applicationContext = new AnnotationConfigApplicationContext(Config.class);
之后,它会在上下文初始化后开始复制数据。但在我将数据复制到内存数据库之前,应用程序也开始处理订单。我想在应用程序启动之前和所有 bean 初始化(上下文加载)之后复制数据。
我试过关注
public class AppPostLoader implements ApplicationListener<ContextRefreshedEvent> {
public void onApplicationEvent(ContextRefreshedEvent event) {
RedisTemplate<String, String> redisTemplate = (RedisTemplate) event.getApplicationContext().getBean("redisTemplate");
//Coping data
}
}
但它没有调用 onApplicationEvent 方法。
如何在应用程序启动之前和上下文加载之后调用它。
在监听器上添加@Component class
我创建了 Spring 应用程序,并且正在独立 Java 应用程序中加载应用程序上下文。 我的代码如下
public class Application {
public static void main(String[] args) {
ApplicationContext applicationContext = new AnnotationConfigApplicationContext(Config.class);
}
}
我想在应用程序启动前复制内存数据库中的一些数据。如果我将代码放在 ApplicationContext applicationContext = new AnnotationConfigApplicationContext(Config.class);
之后,它会在上下文初始化后开始复制数据。但在我将数据复制到内存数据库之前,应用程序也开始处理订单。我想在应用程序启动之前和所有 bean 初始化(上下文加载)之后复制数据。
我试过关注
public class AppPostLoader implements ApplicationListener<ContextRefreshedEvent> {
public void onApplicationEvent(ContextRefreshedEvent event) {
RedisTemplate<String, String> redisTemplate = (RedisTemplate) event.getApplicationContext().getBean("redisTemplate");
//Coping data
}
}
但它没有调用 onApplicationEvent 方法。
如何在应用程序启动之前和上下文加载之后调用它。
在监听器上添加@Component class