gpt4 book ai didi

java - 应用程序启动后初始化spring bean字段

转载 作者:行者123 更新时间:2023-12-01 20:26:07 24 4
gpt4 key购买 nike

我的 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 在应用程序处理用户请求之前初始化?
  • 这是设置应用程序缓存的正确方式吗?还有其他最佳实践可以实现此目的吗? (我的意思是在专门初始化的应用程序上缓存数据库中的数据)

最佳答案

我不确定连接数据库,但我使用@Bean ApplicationRunner init 在应用程序运行时初始化我的对象,但您可以测试它也许可以帮助您

@SpringBootApplication

公共(public)类 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);
};
}

}

关于java - 应用程序启动后初始化spring bean字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58915556/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com