我的spring boot应用程序需要在应用程序启动时从数据库作为缓存将一些数据从数据库加载到bean的字段中,而我所做的就是代码打击
@Component
public class FooCache {
private FooRepository repository;
private static List<Foo> foos;
public FooCache(FooRepository repository) {
this.repository = repository;
}
@EventListener
public void onApplicationEvent(ContextRefreshedEvent event) {
foos = repository.findAll();
}
}
问题是
onApplicationEvent
之前正确初始化了数据库连接池?foos
在应用程序处理用户请求之前进行了初始化?答案 0 :(得分:0)
我不确定连接数据库,但是我使用@Bean ApplicationRunner init在应用程序运行时初始化了我的对象,但是您可以对其进行测试,也许可以为您提供帮助
@SpringBootApplication
公共类CarServiceApplication {
public static void main(String[] args) {
SpringApplication.run(CarServiceApplication.class, args);
}
@Bean
ApplicationRunner init(CarRepository repository) {
return args -> {
Stream.of("Ferrari", "Jaguar", "Porsche", "Lamborghini", "Bugatti",
"AMC Gremlin", "Triumph Stag", "Ford Pinto", "Yugo GV").forEach(name -> {
repository.save(new Car(name));
});
repository.findAll().forEach(System.out::println);
};
}
}